【问题标题】:How to deploy EJB (MDB 2.1.x) in a web project如何在 Web 项目中部署 EJB (MDB 2.1.x)
【发布时间】:2015-03-19 21:46:06
【问题描述】:

我使用 Maven、WebSphere 6.x、RAD 8.x 并获得了一个 maven Web 项目。

我尝试将 MDB 添加到 Web 项目。我把MDB放在src/main/java下,把ejb-jar.xml和websphere绑定直接放在WEB-INF下

当我部署 Web 项目时,我没有看到 MDB 已部署。

我该如何解决这个问题?

我是否应该在 web.xml 中添加一些内容来通知 Web 应用程序它具有 EJB?

我问了一个不同的问题Here,我在其中单独创建了一个 MDB 项目,并尝试依赖 Web 项目中的类,得到的答复是我可以将我的 EJB 部署为 Web 应用程序本身的一部分。

当部署为单独的 ejb 项目时,MDB 会正确部署。但是 EJB 项目在运行时无法找到对 Web 项目的依赖项。它抛出 No Class Found 异常。

所以请帮我解决这两个问题中的一个

1) 如何在 WAR 中创建 EJB 并使 WAR 明白它有一个 EJB? - 在这种情况下,战争不承认 ejb

2)如何让一个独立的 EJB 项目从 Web 项目中识别类? - 在这种情况下,ejb 无法识别战争类别

【问题讨论】:

    标签: maven jakarta-ee war websphere-6.1 ejb-2.x


    【解决方案1】:

    无法在 WebSphere 6.1 的 WAR 中创建 EJB,因为它使用的是 Java EE 1.4。为此,您需要升级到 WebSphere 8.x。

    对于 WebSphere 6.1,您需要将 war 和 ejb 打包到单耳中,并更改应用程序的类加载器设置。部署应用程序后,在控制台中转到Enterprise Applications > yourApp > Class loader 并在WAR class loader policy 中设置Single class loader for application(这些名称来自8.5,但您应该在6.1 中有非常相似的东西,我手头没有6.1 控制台,因为它很旧并且不再支持)。

    详情见Configuring application class loaders

    【讨论】:

    • 如果不是因为您的建议弄乱了类加载器,我会提高您的答案。我很确定您不能配置 WAS 6.x 以使 EAR 中的类可以访问 WAR 类(更不用说它对可移植性的影响)。 OP 需要将所有依赖类移动到 EJB jar 或 EAR/lib 目录中的 jar 中。
    • @SteveC Check this - “将值设置为应用程序的单个类加载器会导致应用程序类加载器加载 Web 模块内容以及 EJB 模块、共享库、RAR 文件和与应用程序关联的依赖项 JAR 文件。”关于可移植性 - OP 正在寻求针对古代特定 WAS 的解决方案。
    • 是的 - 好的。只需标记可移植性问题。我已经完成了很多 WAS->JBoss/Wildfly 迁移,这将是一个相当大的问题
    • @Gas - 谢谢。正如您在另一个线程中建议的那样,我已将所有内容添加到 ejb 中,并使 web 依赖于 ejb。现在在编写测试客户端时遇到了一些问题。在这里发布。@ 987654323@
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多