【问题标题】:Moved EJB to library, now EJB is not found将 EJB 移至库,现在找不到 EJB
【发布时间】:2015-06-01 20:50:33
【问题描述】:

我有一个 EJB X 实现接口 IX;我在 WebSphere 中部署了一个 Web 服务 Z;它的一个类声明了以下内容:

@EJB 九九;

当 X 和 IX 与应用程序位于同一源代码树中时,这可以正常工作。我将其命名为 @Singleton 和 @Startup,尽管我已将其更改为 @Stateful。

该应用程序有一个与另一个 Web 服务共享的 jar,而第二个 Web 服务也可以使用 X。所以我想将 X 移动到每个 Web 服务使用的 jar(或其他)中。

两个 Web 服务当前都使用了一个 jar,因此我将 X、IX 和另一个依赖类移到了该 jar 的源代码树中。我编译了jar并导出它,覆盖了之前使用的jar。我已经打开它并验证了其中包含三个新类。

当我在服务器 (RAD/eclipse) 中运行应用程序时,我收到一条错误消息:

com.ibm.ejs.container.EJBNotFoundException:应用程序 Z 中不存在接口 IX 的 EJB。

如上所述,我在应用程序的一个类中将其声明为@EJB,在一个当 IX 及其支持类位于同一源代码树中时起作用的位置。

jar 文件的 RAD/eclipse 项目最初没有 EJB facet,所以我添加了它;我重新编译等,得到同样的错误。如果需要,我可以将内容添加到 ejb-jar.xml,尽管我认为这就是 Annotations 的用途。但也许有一些注释没有做的事情,或者我需要添加一些东西,因为 bean 在不同的 jar 中。

我想我错过了一些关于配置或声明的内容。这些信息足以告诉我它是什么吗?

【问题讨论】:

    标签: java ejb websphere


    【解决方案1】:

    EJB X 必须在 EJB jar 中,而不是在实用程序 jar 中,注释才能工作。仅将接口 IX 放入实用程序 jar 中,并使所有其他项目 - EJB、WS1 和 WS2 - 依赖于该 jar(例如,将 jar 添加到 EAR/lib)。在 EAR 中打包所有项目。

    【讨论】:

    • 明天我上班时试试看——谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多