1

外部 jar を (ロギング目的で) 使用する Java EE アプリケーションがありますが、JNDI ルックアップを使用して jar 自体で解決される構成用の URL が必要です。

説明の例:

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 で同じことを試みましたが、成功しませんでした。

この種の参照を行う正しい方法は何ですか?

4

1 に答える 1

1

これは通常、URL プロバイダーを使用して行われます。ルックアップが行われるコンポーネントで、リソース環境への参照を定義する必要があります。

<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>
于 2013-10-14T13:39:10.260 に答える