我有一个使用外部 jar(用于记录目的)的 Java EE 应用程序,但它需要一个用于配置的 URL,该 URL 在 jar 本身中通过 JNDI 查找解析。
一些澄清示例:
LoggingLib.jar:-> LoggingFactory.java
public void resolveJndi(){
Context ctx = new InitialContext();
URL myConf = ctx.lookup('url/myConf');
}
这个库包含在真实的应用程序 EAR 文件中,并在应用程序的各个类中调用(在 web 模块、ejb 模块中,甚至在另一个带有 JPA 类的 jar 中)。
如果 jndi name 'url/myConf' 存在,一切正常:但我需要将它映射到部署时指定的个性化名称。对于其他资源,我使用 ibm 绑定解决了这个问题:在部署时,系统会询问这些资源的真正 jndi 名称。这样,软件和配置之间就解耦了:应用程序将查找 java:comp/env/url/myConf 但服务器将使用它的真实名称解析它。我尝试对 application.xml 和 ibm-application-bnd.xml 做同样的事情,但没有成功。
做这种参考的正确方法是什么?