我目前在$ 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) {}
有什么想法吗?
答案 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
(尽管不是在你之后的任何时间)在那里进行更改并能够再次部署而不会破坏自定义)