繁体   English   中英

在运行时从MDB内部访问ejb-name

[英]Accessing ejb-name at run time from inside MDB

从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>

我试图放置一个断点并评估新的InitialContext()。lookup(“ java:comp / env”),然后遍历list和listBindings,但这只会带给我env-entry部分,而不是我想要的。

这很令人沮丧,因为在运行时我可以检查一些元素并清楚地知道我要做什么。

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

关于如何实现的任何想法?

先感谢您。

没有标准的方法来检索组件名称。 我同意,不幸的是,没有java:comp / CompName(ala java:app / AppName和java:module / ModuleName)或EJBContext.getName()。 我过去的建议始终是环境管理方法,我认为这并不理想。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM