多个 Wars 共享公共 EJB JAR

Multiple Wars sharing common EJB JAR

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

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

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

这有意义吗?我如何确保公共 EJB jar 不是 "deployed" 多次(每个依赖它的 WAR 一次)?

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

可以通过 war 插件配置

创建类路径条目
 <manifestEntries><Class-Path>project-ejb-${project.version}.jar</Class-Path>

或者耳插件配置:

<skinnyWars>true</skinnyWars>

有关详细信息,请参阅 skinnyWars 说明。