【发布时间】: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