gpt4 book ai didi

hibernate - 在 Web 应用程序之间共享开源 (Spring/Spring Security/Hibernate/etc) jar

转载 作者:行者123 更新时间:2023-11-28 21:49:47 24 4
gpt4 key购买 nike

我们有一堆基于开源框架的 Java EE 应用程序,例如上面提到的。每个应用程序的 WEB-INF/lib 有以下公共(public) jar:

antlr-2.7.6.jar*
aopalliance-1.0.jar*
asm-3.3.1.jar*
aspectjrt-1.6.8.jar*
aspectjweaver-1.6.8.jar*
cglib-2.2.jar*
commons-beanutils-1.8.3.jar*
commons-collections-3.1.jar*
commons-dbcp-1.4.jar*
commons-digester-2.1.jar*
commons-fileupload-1.1.1.jar*
commons-io-2.0.1.jar*
commons-logging-1.1.1.jar*
commons-pool-1.5.6.jar*
dom4j-1.6.1.jar*
hibernate-jpa-2.0-api-1.0.0.Final.jar*
hibernate-tools.jar*
hibernate-validator-4.1.0.Final.jar*
hibernate3.jar*
jackson-all-1.7.5.jar*
javassist-3.12.0.GA.jar*
javax.inject.jar*
log4j-1.2.16.jar*
org.springframework.aop-3.0.5.RELEASE.jar*
org.springframework.asm-3.0.5.RELEASE.jar*
org.springframework.beans-3.0.5.RELEASE.jar*
org.springframework.context-3.0.5.RELEASE.jar*
org.springframework.context.support-3.0.5.RELEASE.jar*
org.springframework.core-3.0.5.RELEASE.jar*
org.springframework.expression-3.0.5.RELEASE.jar*
org.springframework.jdbc-3.0.5.RELEASE.jar*
org.springframework.orm-3.0.5.RELEASE.jar*
org.springframework.transaction-3.0.5.RELEASE.jar*
org.springframework.web-3.0.5.RELEASE.jar*
org.springframework.web.servlet-3.0.5.RELEASE.jar*
poi-3.7-20101029.jar*
slf4j-api-1.6.1.jar*
slf4j-ext-1.6.1.jar*
slf4j-log4j12-1.6.1.jar*
spring-security-acl-3.0.5.RELEASE.jar*
spring-security-aspects-3.0.5.RELEASE.jar*
spring-security-config-3.0.5.RELEASE.jar*
spring-security-core-3.0.5.RELEASE.jar*
spring-security-taglibs-3.0.5.RELEASE.jar*
spring-security-web-3.0.5.RELEASE.jar*
testng-6.0.1.jar*
tiles-api-2.2.2.jar*
tiles-core-2.2.2.jar*
tiles-jsp-2.2.2.jar*
tiles-servlet-2.2.2.jar*
tiles-template-2.2.2.jar*
validation-api-1.0.0.GA.jar*

我们在部署时遇到 permgen 错误,每场 war 都是 20 MB 的一小部分,其中大部分是第 3 方 jar。

由于所有开源项目的所有应用程序都在同一版本上,我想知道如果我移动 Spring、Spring Security、Spring Tiles、Hibernate、Hibernate 相关的第 3 方 jars(cglib、antlr、等),记录和 apache-commons.* 到 TOMCAT/lib 文件夹。

我记得从 Struts 时代(2003 年或 2004 年)开始,每个 Web 应用程序都应该拥有自己的 struts jar 副本,并且不鼓励在应用程序服务器级别共享。任何此类劝阻(除了版本控制)是否适用?

作为一个辅助问题:是否有一般规则可以遵循哪些 3rd 方 jar 可以共享或不能共享(如果文档中没有明确提及?

我将不胜感激任何帮助。谢谢。

最佳答案

根据您引导应用程序的方式,您可能可以移动大部分(或全部)这些 jar(测试它并找出答案)。您需要注意的是依赖于从静态初始化器引导的框架。如果我没记错的话,Struts 通过读取 struts-config 文件的静态初始值设定项来配置自己。由于静态初始化程序仅在第一次加载类时运行,因此它在共享类加载器中效果不佳。

更重要的是,您的问题可能不会仅仅将 jars 移动到共享加载器就结束。 Spring 和 Hibernate 将在运行时为驻留在永久代中的实体和 AOP 代理(用于事务支持等)创建大量动态类。通常,对于大量使用 Spring 和 Hibernate 的应用程序,您必须增加 permgen 空间(例如,通过 Oracle HotSpot VM 上的 -XX:MaxPermSize 参数)。

关于hibernate - 在 Web 应用程序之间共享开源 (Spring/Spring Security/Hibernate/etc) jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8214064/

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