2010-01-21 47 views
1

我有一个运行在tomcat上(并正在运行)的web服务。我想将端点URL解压到战争以外的文件中,以便在不需要重新部署战争的情况下更改它。我在Windows XP上独立运行Tomcat 6。Tomcat无法识别Web服务中的上下文

我的想法是将它放在上下文中,作为上下文参数或作为环境变量。

我不确定哪个更好,因为我无法识别上下文,所以我不知道哪个方法可行。所以我的第一个问题,我应该使用下面哪些条目(如果有的话)?

<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/[主机]目录“。那么,那不会发生。我真的不想这样做,因为我希望上下文完全与战争分开存在,但这是一个测试,看看我能否得到那么多。失败。

所以我尝试手动添加上下文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} 

所以我不认为上下文文件是越来越读,不管我在哪里把它。

这不是一个servlet(它可能应该是?),如果重要的话。

回答

2

我从上下文中删除了docBase属性,使用了Environment标签,并使用java:comp/env/webserviceURI检索了值,并且瞧!成功。

也许这会帮助别人!

相关问题