【问题标题】:jboss 7 - get module name for session beanjboss 7 - 获取会话 bean 的模块名称
【发布时间】:2013-10-29 15:06:49
【问题描述】:

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 名称包含版本。可以在 jar 文件的名称中使用版本,但这会迫使我们在代码中找到模块名称被硬编码的每个地方。这是一件可怕的事情。

问题

如何处理这种情况?

【问题讨论】:

    标签: java ejb jboss7.x jndi


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      maven-ear-plugin 支持名为 no-version-for-ejbsfile name mapping,它从 EAR 中的 EJB-JAR 中删除版本。

      【讨论】:

        猜你喜欢
        • 2011-05-17
        • 1970-01-01
        • 1970-01-01
        • 2019-03-11
        • 1970-01-01
        • 2013-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多