java:comp / env没有绑定

时间:2013-02-19 20:24:03

标签: java tomcat catalina

我目前在$ CATALINA_HOME / lib目录中有一些库来处理一些系统/数据库身份验证。其中一个文件foo.jar包含一个扩展的类

org.apache.catalina.realm.DataSourceRealm

并且正在用于身份验证。此文件需要访问我存储在server.xml中的一些属性但是,当尝试访问它时,我收到错误。代码段如下

try{
Context ctx = new InitialContext();
Context envCtx = (Context)ctx.lookup("java:comp/env");

String property = (String)envCtx.lookup("property");

} catch(Exception ex) {} 

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您还需要在app的context.xml中拥有关联的ResourceLink。例如,如果您的webapp名为foo,则应该有一个名为conf/Catalina/localhost/foo.xml且带有

的文件
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE Context>

<Context antiJARLocking="true">
    <ResourceLink name="property" 
        type="classname" 
        global="propertyNameInGlobalNamingResources" />  
    ...
</Context>

如果你在war文件中包含META-INF/context.xml这些链接,tomcat会在第一次部署应用程序时将其复制到conf/Catalina/localhost/foo.xml(尽管不是在你之后的任何时间)在那里进行更改并能够再次部署而不会破坏自定义)