【问题标题】:Multiple Wars sharing common EJB JAR多个 Wars 共享公共 EJB JAR
【发布时间】:2015-01-07 17:25:58
【问题描述】:

我有一个包含许多 EJB 的 jar,我需要从多个 WAR 中访问它们。我正在尝试找出将这些打包并部署到单个应用服务器的最佳方法。

目前,我单独部署每个 WAR,每个 WAR 都依赖于公共 EJB jar,但这似乎非常低效(内存方面等),因为每个应用程序都有单独的 JNDI 绑定。

我也尝试将这些 WAR 打包到 EAR 中,但这似乎没有任何改变。

这有意义吗?如何确保不会多次“部署”通用 EJB jar(每个依赖它的 WAR 一次)?

【问题讨论】:

  • 你的一只耳朵应该有 3 个模块 - 2 个战争和 1 个 ejb。不要在 WAR 中包含 EJB,因为会有重复项。依赖应该只导致类路径设置,不包括战争中的jar。
  • 如果我将范围设置为在每个 WAR 的 pom.xml 中提供 - 这会完成吗?
  • 这应该可以防止包含 jar,但我不确定它是否会在运行时可见。如果没有,则必须将 ejbmodule.jar 添加到 MANIFEST.MF 文件中的 ClassPath。
  • 好的,谢谢!我很快就会试一试!
  • 为您的模块之一添加示例 pom.xml,如果它不起作用。因为您可能需要将依赖项更改为 ejb 或添加 project-ejb-${project.version}.jar

标签: jboss7.x ejb-3.0 war ear


【解决方案1】:

要解决您的问题,您需要一只耳朵拥有 3 个模块 - 2 个战争和 1 个 ejb。不要在 WAR 中包含 EJB,因为会有重复项。依赖应该只导致类路径设置,不包括war文件中的jar。

类路径条目可以通过war插件配置创建

 <manifestEntries><Class-Path>project-ejb-${project.version}.jar</Class-Path>

或ear插件配置:

<skinnyWars>true</skinnyWars>

更多详情请参阅skinnyWars 描述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多