- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个项目,该项目有多个使用 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/
有人可以解释一下什么是 exploded EAR 吗?我检查了谷歌但找不到明确的答案。是不同的格式吗? 与非 exploded EAR 有什么区别? 最佳答案 压缩的 EAR 文件,扩展名为 .ear
我在单个域下有 2 个 .ear 文件(例如:abc.ear、def.ear)。他们之间如何沟通? 最佳答案 您可以使用Remote Method Invocation 。通常,应用程序的 Bean
我的 gradle 模块具有以下文件夹结构: src main application META-INF applica
基本上,我遇到一种情况,我必须从另一个 EAR 中的 WAR 访问一个 EAR 中 JAR 中声明的 EJB。两个 EAR 都部署到同一 WebLogic 托管服务器(同一域)。 Java 代码中的
假设我有一个标准的 EAR 文件(以及用于生成它的源文件),需要进行哪些额外的处理才能将其转换为 IBM WebSphere“增强型 EAR”? 问这个问题的另一种方法是问“增强型 EAR 和标准 E
我正在尝试使用 gradle build 构建 ear 并且 ear 构建良好。在我的项目中,ejb 模块正在创建多个自定义 jar 以及 ejb jar 。如何将它们添加到 ear 根目录而不是将它
你可以将一个耳朵文件放入另一个耳朵文件中吗?我尝试将 Ear 依赖项添加到 Ear 模块,指定 Artifact 类型为 ear 使用maven 3.3.3,但我得到 Failed to initia
我有两个.Ear 文件,即A.EAR 和B.EAR。第一个文件是我的应用程序(大约 1.5 MB),第二个文件包含所有需要的库,例如 Hibernate、log4j 等(大约 70 MB)。我怎样才能
我在尝试从另一个 EAR 调用部署在一个 EAR 中的远程服务时遇到问题。我没有为我的 EJB 指定任何名称,无论它们是 @Local 还是 @Remote,因此只需使用注释并通过 @EJB 注入(i
在 jenkins 上执行 mvn install 时出现此错误: [JENKINS] Archiving disabled Waiting for Jenkins to finish collect
我有两个 Spring 应用程序 A 和 B,每个应用程序都位于一个单独的 EAR 文件中。现在我想从 A 调用到 B,反之亦然,甚至可能是 A -> B -> A 或更多。 调用必须交易安全。 推荐
我的项目结构如下。服务器是 Glassfish 4。IDE - netbeans 7.4。项目 temp 被项目 a 使用。 EAR + lib/temp.jar + a.war Temp.jar
我需要在使用 maven-ear-plugin 生成的 EAR 中添加 2 个 XML 文件。 不幸的是,我还没有看到将任意文件添加到 EAR 的方法。 documentation该插件的内容为“EA
我们有无数次 war 的解决方案。 war 在它们都使用hibernate和spring的意义上是相似的。这意味着我们在每场 war 中都有许多相同的 jar 。这正在成为一个问题,因为耳朵的大小开始
Desperatley 尝试使用 Maven 3 中的 Maven EAR 插件版本 2.10.1 来创建包含某些模块的 EAR bundle 。generate-application-xml 目标
我有一个 EAR,在上下文“/”中部署为生产环境。 我想在服务器上部署应用程序的测试版本,同一个 Glassfish 实例。 是否可以在同一实例中的不同上下文和端口下部署应用程序? 如果是这样,除了更
Gradle 构建脚本会创建一个 EAR 文件,其中包含一些 jars 和一个 war。这一切之前都是在 Maven 中完成的,现在是迁移到 Gradle 的主题。 环境: Gradle 1.12 G
我用 Java EE 创建了一个应用程序现在想在互联网上发布它。出于这个原因,我需要 EAR文件。但我无法找到它。 我搜索了每个目录,但我看不到它。 EAR在哪里文件留在文件目录? 我用 Eclips
我正在使用Gradle,并且想要构建一个EAR,其中包括在存储库中找到的预构建的WAR文件。我有这样的事情: dependencies { earlib 'PathName:NameOfPre
我有一个java Ear存档,其中包含“lib”文件夹,在application.xml中声明为库目录。 我的问题是某些模块不需要 lib 文件夹中的某些 jar。此外,我的模块之一(.war 存档)
我是一名优秀的程序员,十分优秀!