0

老板 7

描述

为了获得对某些组件(本例中为会话 bean)的引用,我们可以使用查找功能。如果组件不在同一个模块中,我们必须指定模块名称。

例子:

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

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

当模块名称始终相同时是可以接受的。但它可以及时改变。例如,当使用 maven 构建模块时,默认 jar 名称包含版本。可以在 jar 文件的名称中使用版本,但这迫使我们在代码中找到模块名称被硬编码的每个地方。这是一件可怕的事情。

问题

如何处理这种情况?

4

2 回答 2

0

Use <module-name> in ejb-jar.xml to use a static module name rather than having it default to the archive base name.

于 2013-10-29T15:10:32.153 回答
0

maven-ear-plugin支持名为的文件名映射no-version-for-ejbs,它从 EAR 中的 EJB-JAR 中删除版本。

于 2013-10-29T16:38:33.430 回答