Tomcat не распознает контекст в веб-сервисе - PullRequest
1 голос
/ 21 января 2010

У меня есть веб-сервис, работающий на 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}

Так что я не думаю, что файл контекста читается, независимо от того, где я его положил.

Это не сервлет (а может, так и должно быть?), Если это имеет значение.

1 Ответ

2 голосов
/ 26 января 2010

Я удалил атрибут docBase из контекста, использовал тег Environment и извлек значение с помощью java: comp / env / webserviceURI и вуаля! Успех.

Может быть, это поможет кому-то еще!

...