2010-01-21 3 views
1

У меня есть webservice, работающий на tomcat (и работающий). Я хотел бы извлечь URL-адрес конечной точки в файл за пределами войны, чтобы его можно было изменить без необходимости переустановки войны. Я работаю локально с Tomcat 6 автономно в Windows XP.Tomcat не распознает контекст в веб-сервисе

Моя мысль заключалась в том, чтобы иметь его в контексте, либо как параметр контекста, либо как переменную среды.

Я не был уверен, что было лучше, и поскольку я не могу понять, что Контекст признан, я понятия не имею, что будет работать. Итак, мой первый вопрос, какую из приведенных ниже записей я должен использовать (если есть)?

<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> 

Предполагая, что линия окружающей среды является правильным, мой код, чтобы получить это:

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} 

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

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

ответ

2

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

Возможно, это поможет кому-то еще!

Смежные вопросы