gpt4 book ai didi

java - 将多个 WAR 重新打包到一个 EAR 中

转载 作者:行者123 更新时间:2023-12-01 05:57:57 25 4
gpt4 key购买 nike

我正在开发一个项目,该项目有多个使用 Maven 构建并部署在 Java EE 中的 Web 应用程序 (WAR)。

这些 WAR 共享几个常见的业务 JAR(例如包含从 hibernate 加载的域对象的 JAR)以及其他框架 JAR(例如 Spring 和 Hibernate)。

他们使用 Spring MVC,应用程序上下文加载 Hibernate。由于每个 WAR 在 servlet 容器中都有自己的 Classpath,因此 Hibernate 缓存(EHcache)不共享。

我想要的是在不同的 WAR 之间共享缓存以及 hibernate session 工厂 bean(以及其他常见 bean)。我认为这可以通过将这些 WAR 重新打包到 EAR 中来实现,然后我必须使用这些公共(public) bean 制作一个 spring 配置 XML,并在 WAR 的 Spring XML 中使用我所读到的类似 SingletonBeanFactoryLocator 的内容。

我在这里问的是是否有一种简单的方法可以做到这一点,最大限度地减少对 WAR 的 POM 的更改

注意:我熟悉 WAR、tomcat 和 servlet,但不太熟悉 EAR。

提前致谢。

最佳答案

嗯...大多数 Java EE 容器都使用隔离的类加载器进行 WAR,即使是在 EAR 中(即使 Java EE 规范要求单个 EAR 模块之间的类加载隔离),所以我不会对 EAR 打包抱有太多期望,特别是如果您希望应用程序保持可移植性(即,如果您不想依赖任何应用程序服务器特定行为)。

现在,如果在多个应用程序之间共享 session 工厂和二级缓存确实有意义,则可以考虑将它们合并到单个 WAR 中。在我看来,这将是最简单的方法。但我很想问为什么它们是分开的?当应用程序是独立的时,它们在大多数情况下都有单独的治理,我不知道在这种情况下将它们部署在一起是否是一个好主意。

如果无法合并 WAR,请告诉我们您正在使用哪个容器。

关于java - 将多个 WAR 重新打包到一个 EAR 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2311726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com