Давая эту запись из-jar.xml EJBДоступ к EJB-имя во время выполнения из внутри MDB
<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>
Я пытался поставить точку останова и оценить новый InitialContext() поиск («Java: комп/ENV»). Затем перебирать либо список и listBindings, но это только принесет мне раздел окр-запись не то, что Я хочу.
Это очень разочаровывает, как во время выполнения я могу осмотреть некоторые элементы и ясно увидите, что я после
javaNameSpaceImpl:{appName=someModule,_moduleName=someModuleEJB,_componentName=MyTestEJB,_bootstrapAddress=rir:…etc}
Любая идея о том, как это может быть достигнуто?
Заранее спасибо.
Вы можете проанализировать XML-файл. Если вы заменили аннотации 'ejb-jar.xml', вы могли бы прочитать аннотированные значения во время выполнения. – Beryllium
Это не сработает, потому что мой класс some.path.to.TestMessageBean развертывается несколько раз (примерно в 50 раз) в качестве другого MDB. Это просто очередь, что этот MDB прослушивает вещь, которая изменяется, а не исполняемый код. – Julian