jboss 7 - 获取会话bean的模块名称

时间:2013-10-29 15:06:50

标签: java ejb jboss7.x jndi

Jboss 7

说明

为了引用某个组件(本例中的会话bean),我们可以使用 lookup 函数。如果组件不在同一模块中,我们必须指定模块名称。

示例:

String moduleName = "exampleModuleName";  
InitialContext context = new InitialContext();
IHelloLocal helloBean = (IHelloLocal) context.lookup("java:app/" + moduleName + "/" + HelloBean.class.getSimpleName() + "!" + IHelloLocal.class.getName());

这里的问题是硬编码模块名称。

当模块名称始终相同时,这是可以接受的。但它可以及时改变。例如,当使用maven构建模块时,默认jar名称包含version。可以在jar文件的名称中使用版本,但这迫使我们在代码中查找模块名称为硬编码的每个位置。这太可怕了。

问题

如何处理这种情况?

2 个答案:

答案 0 :(得分:0)

在ejb-jar.xml中使用<module-name>来使用静态模块名称,而不是将其默认为存档基本名称。

答案 1 :(得分:0)

maven-ear-plugin支持名为no-version-for-ejbs的{​​{3}},它会从EAR中的EJB-JAR中删除该版本。