WebSphere External Jar JNDI绑定

时间:2013-10-14 11:15:40

标签: binding websphere jndi websphere-8

我有一个Java EE应用程序,它使用外部jar(用于记录目的),但它需要一个配置URL,它在jar本身中使用JNDI查找进行解析。

一些澄清例子:

LoggingLib.jar:      - > LoggingFactory.java

public void resolveJndi(){
     Context ctx = new InitialContext();
     URL myConf = ctx.lookup('url/myConf');
}

这个lib包含在真正的应用程序EAR文件中,并在各种应用程序类中调用(在web模块,ejb模块中,甚至在另一个带有JPA类的jar中)。

如果jndi名称'url / myConf'存在,则一切正常:但我需要将其映射到部署时指定的个性化名称。 对于其他资源,我使用ibm绑定解决了这个问题:在部署时,会询问哪些是这些资源的真正jndi名称。通过这种方式,软件和配置之间存在脱钩:应用程序将查找java:comp / env / url / myConf,但服务器将使用它的真实名称解析它。 我尝试使用application.xml和ibm-application-bnd.xml做同样的事情,但没有成功。

这种参考的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

这通常使用URL providers完成。您需要在组件中定义对资源环境的引用:

<resource-env-ref>
    <resource-env-ref-name>local_url_reference</resource-env-ref-name>
    <resource-env-ref-type>java.net.URL</resource-env-ref-type>
</resource-env-ref>

然后在定义了URL资源之后,您将能够将其绑定到本地组件的命名空间中。 ibm-ejb-jar-bnd.xml看起来像这样(对于EJB):

  <session name="YourBean">
    <resource-env-ref name="local_url_reference" binding-name="global_url_reference"/>
  </session>