Как я могу получить название текущего веб-приложения в Java EE?
Я довольно доволен автономным Java, но Java EE плохо мне знаком. Я пишу некоторый пользовательский код для включения к стороннему Java пакета создания отчетов EE. У меня есть несколько экземпляров, развернутых на том же сервере Tomcat, таким образом, у меня есть что-то как:
C:\ +-- tomcat6 +-- webapps +-- app1 +-- app2
Таким образом, когда пользователь переходит в, скажем, http://example.com/app1/viewReport, я хочу смочь получить "app1". (А не путем парсинга URL, предпочтительно.)
Кроме того, если бы был способ получить корень app1 (в этом примере, C:\tomcat6\webapps\app1), который был бы большим также.
это называется контекстным путем. Если ваш код запущен в контексте запроса веб-запроса веб-запроса, вы можете получить его, позвонив в httpservletRequest # getContextPath ()
.
Если вы пытаетесь получить доступ к содержимому файл / ресурс в своем WebApp, вы лучше всего используете один из:
Также возможно получить физическую путь на диске файла / ресурса, учитывая путь относительно веб-приложения, используя ServletContext # GetrealPath (String)
, но это не надежно (Не всегда работает, если вы развернуте вас WebApp в качестве войны, например,).
на ваш комментарий, вы пытаетесь получить доступ к ресурсу в каталоге / Web-inf / Classe. Поскольку Web-inf / Classes / * - это то, где указываются на веб-прикладные классы, вы можете просто получить доступ к нему доступ, как если бы вы получили доступ к любому ресурсу ClassPath в приложении Java SE. Опять же, предполагая, что ваш код работает в контексте WebApp, вы можете просто использовать следующее:
В вашем случае вы, вероятно, захотите Чтобы использовать последнюю, а затем загрузить файл свойств через свойства # нагрузка (вход).
что-то вдоль линий:
Properties props = new Properties();
props.load(getClass().getResourceAsStream("/reportCustom.properties"));
Что я пытаюсь сделать, это загрузить файл свойств в WebApps / MyApp / Web-inf / Classes / ReportCustom.properties
Так как файл находится в классах
Справочник, вы можете загрузить его с помощью классного загрузки (обычный механизм Java для загрузки файлов на классе). Возможно, лучше всего использовать CloseLoader CloseLoader .