У меня есть веб-сервис, работающий на tomcat (и работающий). Я хотел бы извлечь URL-адрес конечной точки в файл за пределами войны, чтобы его можно было изменить без необходимости повторного развертывания войны. Я работаю локально с Tomcat 6 в Windows XP.
Я думал, что он должен быть в контексте, либо в качестве параметра контекста, либо в качестве переменной окружения.
Я не был уверен, что было лучше, и поскольку я не могу распознать контекст, я понятия не имею, что сработает. Итак, мой первый вопрос, какую из записей ниже я должен использовать (если есть)?
<Context path="/myapp" docBase="myapp">
<Environment name="webserviceURI" type="java.lang.String" override="true" value="endpointURLredacted"/>
<context-parameter>
<name>uri</name>
<value>endpointURLredacted</value>
</context-parameter>
</Context>
Предполагая, что строка Environment верна, мой код для извлечения:
InitialContext ic = new InitialContext();
endpoint = (String)ic.lookup("webserviceURI");
Однако ....
Я попытался добавить это в файле context.xml в папку META-INF, и у меня сложилось впечатление, что при развертывании войны нужно процитировать ответ на другой вопрос здесь: «При развертывании WAR фрагмент контекста (META-INF / context.xml) копируется в каталог conf / Catalina / [host]. " Ну, этого не происходит. Я действительно не хочу делать это таким образом, так как я хочу, чтобы контекст существовал совершенно отдельно от войны, но это был тест, чтобы увидеть, смогу ли я вообще зайти так далеко. Потерпеть поражение.
Поэтому я попытался добавить контекстный xml (переименованный в myapp.xml) в эту папку (пришлось сначала создать его) вручную, но я все еще не думаю, что файл читается.
Когда я запускаю приложение, я получаю сообщение об ошибке типа «javax.naming.NameNotFoundException: имя webserviceURI не связано в этом контексте».
Я попытался распечатать исходную среду контекста:
Context: {java.naming.factory.initial=org.apache.naming.java.javaURLContextFactory,java.naming.factory.url.pkgs=org.apache.naming}
Так что я не думаю, что файл контекста читается, независимо от того, где я его положил.
Это не сервлет (а может, так и должно быть?), Если это имеет значение.