2

このエントリを ejb-jar.xml から与える

<message-driven id="my_test_mdb ">
        <description>Some description</description>
        <display-name>MyTest</display-name>
        <ejb-name>MyTestEJB</ejb-name>
        <ejb-class>some.path.to.TestMessageBean</ejb-class>
        <transaction-type>Container</transaction-type>
        <message-driven-destination>
            <destination-type>javax.jms.Queue</destination-type>
        </message-driven-destination>
</message-driven>

my_test_mdb に定義された値に実行時にアクセスする方法はありますか。私は主に ejb-name 値を取得することに関心がありますが、display-name などの他の値についても同じ質問をする必要があります。

以下のようないくつかの環境エントリを追加できるという事実を認識していますが、これは一種の重複とエラーが発生しやすいように見えます。

<message-driven>
    ...
    <ejb-name>MyTestEJB</ejb-name>
    ...
    <env-entry>
            <env-entry-name>ejbName</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
            <env-entry-value>MyTestEJB</env-entry-value>
    </env-entry>
</message-driven>

ブレークポイントを配置して new InitialContext().lookup("java:comp/env") を評価してから、リストと listBindings のいずれかを反復処理しようとしましたが、それは私が望むものではない env-entry セクションをもたらすだけです。

実行時にいくつかの要素を調べて、自分が何を求めているのかをはっきりと見ることができるので、非常にイライラします

javaNameSpaceImpl:{appName=someModule,_moduleName=someModuleEJB,_componentName=MyTestEJB,_bootstrapAddress=rir:…etc}

これをどのように達成できるかについてのアイデアはありますか?

前もって感謝します。

4

1 に答える 1

1

コンポーネント名を取得する標準的な方法はありません。残念ながら、java:comp/CompName (java:app/AppName および java:module/ModuleName) または EJBContext.getName() がないことには同意します。これまでの私の推奨事項は常に env-entry アプローチでしたが、これは理想的ではないことに同意します。

于 2013-09-27T15:27:23.407 に答える