Мне не удалось найти простой способ выяснить строку версии для файла WAR, развернутого с версионным именованием Tomcat 7 (т. Е. Приложение ## version.war).Вы можете прочитать об этом здесь и о том, что он включает здесь .
Было бы неплохо, если бы был несколько более поддерживаемый подход, чем обычный швейцарский армейский ножотраженного растрескивания ребер:
final ServletContextEvent event ...
final ServletContext applicationContextFacade = event.getServletContext();
final Field applicationContextField = applicationContextFacade.getClass().getDeclaredField("context");
applicationContextField.setAccessible(true);
final Object applicationContext = applicationContextField.get(applicationContextFacade);
final Field standardContextField = applicationContext.getClass().getDeclaredField("context");
standardContextField.setAccessible(true);
final Object standardContext = standardContextField.get(applicationContext);
final Method webappVersion = standardContext.getClass().getMethod("getWebappVersion");
System.err.println("WAR version: " + webappVersion.invoke(standardContext));