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文件的名称中使用版本,但这迫使我们在代码中查找模块名称为硬编码的每个位置。这太可怕了。
问题
如何处理这种情况?
答案 0 :(得分:0)
在ejb-jar.xml中使用<module-name>
来使用静态模块名称,而不是将其默认为存档基本名称。
答案 1 :(得分:0)
maven-ear-plugin
支持名为no-version-for-ejbs
的{{3}},它会从EAR中的EJB-JAR中删除该版本。