2013-10-14 60 views
1

我有一個使用外部jar(用於日誌記錄目的)的Java EE應用程序,但它需要一個配置URL,通過JNDI查找在jar本身中解析。WebSphere外部Jar JNDI綁定

一些澄清例子:

LoggingLib.jar: - > LoggingFactory.java

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

這個LIB包含在真正的應用程序EAR文件,並在各種類的應用程序的調用(在網絡模塊,ejb模塊,甚至在具有JPA類的另一個jar中)。

如果jndi名稱'url/myConf'存在,那麼一切正常:但我需要將它映射到在部署時指定的個性化名稱。 對於其他資源,我已經使用ibm綁定解決了此問題:在部署時,會詢問哪些是這些資源的真正jndi名稱。這樣,軟件和配置之間就會解耦:應用程序將查找java:comp/env/url/myConf,但服務器將使用它的真實名稱來解析它。 我試過用application.xml和ibm-application-bnd.xml做同樣的事情,但沒有成功。

什麼是做這種參考的正確方法?

回答

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> 
+0

你沒有看過所有的問題:我完全知道如何Web模塊和EJB上指定的資源,我的問題是有關如何爲指定資源一個包含在所有項目中的外部罐子。目前我在所有的ejbs和web.xml中指定了相同的資源,但這是一種骯髒的方式,我問是否可以在application.xml或類似的東西上指定它 – Eldono

+0

我認爲很明顯,綁定是爲Java EE組件指定的,哪些任意JAR不是。 – fnt