There is nothing in the spec that returns the path to the actual war file.
If
tomcat is configured to upack the war file on deployment (which is the default), using ServletContext.getRealPath
ServletContext.getRealPath will return the location of the your app's directory structure. Read the docs for that method carefully though.
Java web applications do not always have to be unpacked directory structures. When they're not, getRealPath will return null. This means that relying on it will make your app less portable and very dependent on the way it will be deployed.