如何在Tomcat中部署多个应用程序,共享jar并拥有不同的数据源?

时间:2011-12-11 22:47:49

标签: tomcat grails

我想在Tomcat容器中部署三个Grails Web应用程序。我使用的是Grails 1.3.7和Tomcat 7.0.23。我想将所有公共jar放在tomcat / shared / lib目录中。为什么?我想拥有较小的war文件并减少PermGen所需的内存量。

我在 conf / catalina.properites

中配置下一行
shared.loader=${catalina.base}/shared/lib,${catalina.base}/shared/lib/*.jar

对于所有三个应用程序,我执行

  grails war

我将WEB-INF / lib下的所有* .jars复制到$ CATALINA_HOME / shared / lib

稍后我为每个应用程序生成没有jar的war文件

grails war --nojars

我将所有三场战争都放在 tomcat / webapps 目录中。每个应用程序的 conf / DataSource.groovy 中的生产数据源如下所示。

App A)

   production {
        dataSource {
            dbCreate = "update"
            username = "userA"
            password="password"
            url = "jdbc:mysql://localhost:3306/applicationA"
            driverClassName = "org.gjt.mm.mysql.Driver"
        }
    }

App B)

   production {
        dataSource {
            dbCreate = "update"
            username = "userB"
            password="password"
            url = "jdbc:mysql://localhost:3306/applicationB"
            driverClassName = "org.gjt.mm.mysql.Driver"
        }
    }

App C)

   production {
        dataSource {
            dbCreate = "update"
            username = "userC"
            password="password"
            url = "jdbc:mysql://localhost:3306/applicationC"
            driverClassName = "org.gjt.mm.mysql.Driver"
        }
    }

当我启动Tomcat时,日志看起来像这样:

Dec 11, 2011 11:28:15 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
Dec 11, 2011 11:28:15 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'debug' to '0' did not find a matching property.
Dec 11, 2011 11:28:15 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'debug' to '0' did not find a matching property.
Dec 11, 2011 11:28:15 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'debug' to '0' did not find a matching property.
Dec 11, 2011 11:28:15 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Dec 11, 2011 11:28:15 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Dec 11, 2011 11:28:15 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 652 ms
Dec 11, 2011 11:28:15 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Dec 11, 2011 11:28:15 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.23
Dec 11, 2011 11:28:16 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:22 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationB-0.1war
Dec 11, 2011 11:28:22 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:23 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationA-0.1war
Dec 11, 2011 11:28:23 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:24 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationC-0.1war
Dec 11, 2011 11:28:24 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/docs
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/examples
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/xml is already defined
Dec 11, 2011 11:28:25 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Dec 11, 2011 11:28:25 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Dec 11, 2011 11:28:25 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@5f24aa56')
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/host-manager
Dec 11, 2011 11:28:25 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/manager
Dec 11, 2011 11:28:25 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:26 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationB-0.1war
Dec 11, 2011 11:28:26 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:26 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationA-0.1war
Dec 11, 2011 11:28:26 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:27 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationC-0.1war
Dec 11, 2011 11:28:27 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:27 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/docs
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/examples
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/xml is already defined
Dec 11, 2011 11:28:28 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Dec 11, 2011 11:28:28 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Dec 11, 2011 11:28:28 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@55e610e3')
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/host-manager
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/manager
Dec 11, 2011 11:28:28 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:28 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationB-0.1war
Dec 11, 2011 11:28:28 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:29 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationA-0.1war
Dec 11, 2011 11:28:29 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:29 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationC-0.1war
Dec 11, 2011 11:28:29 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/docs
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/examples
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/xml is already defined
Dec 11, 2011 11:28:30 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Dec 11, 2011 11:28:30 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Dec 11, 2011 11:28:30 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@75ea2543')
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/host-manager
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/manager
Dec 11, 2011 11:28:30 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationB-0.1war
Dec 11, 2011 11:28:31 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationA-0.1war
Dec 11, 2011 11:28:31 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationC-0.1war
Dec 11, 2011 11:28:32 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/docs
Dec 11, 2011 11:28:32 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/examples
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/xml is already defined
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/host-manager
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/manager
Dec 11, 2011 11:28:33 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /Applications/apache-tomcat-7.0.23/webapps/ROOT
Dec 11, 2011 11:28:34 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Dec 11, 2011 11:28:34 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Dec 11, 2011 11:28:34 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 19073 ms

应用程序启动,我可以联系到它们。 但是,唯一具有工作数据源连接的应用程序是最后加载的上下文。

INFO: Deploying web application archive /Applications/apache-tomcat-7.0.23/webapps/ApplicationC-0.1war
Dec 11, 2011 11:28:29 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext

我该怎么做才能解决这个问题?

1.3.7

的解决方案

grais war命令中生成的一些jar无法在每个应用程序之间共享。

无法共享的jar ,应该在webapps / appA / WEB-INF / lib中

grails-bootstrap-1.3.7.jar      
grails-gorm-1.3.7.jar           
grails-web-1.3.7.jar
grails-core-1.3.7.jar           
grails-resources-1.3.7.jar      
spring-security-core-3.0.5.RELEASE.jar
grails-crud-1.3.7.jar           
grails-spring-1.3.7.jar

可以共享的jar ,可以在tomcat / shared / lib中

antlr-2.7.6.jar                     
aopalliance-1.0.jar                 
asm-3.3.1.jar                       
asm-analysis-3.3.1.jar                  
asm-tree-3.3.1.jar                  
asm-util-3.3.1.jar                  
aspectjrt-1.6.8.jar                 
aspectjweaver-1.6.8.jar                 
c3p0-0.9.1.2.jar                    
cglib-nodep-2.1_3.jar                   
commons-beanutils-1.8.0.jar             
commons-codec-1.4.jar                   
commons-collections-3.2.1.jar               
commons-dbcp-1.3.jar                    
commons-el-1.0.jar                  
commons-fileupload-1.2.1.jar                
commons-io-1.4.jar                  
commons-lang-2.4.jar                    
commons-lang3-3.0.1.jar                 
commons-pool-1.5.5.jar                  
commons-validator-1.3.1.jar             
concurrentlinkedhashmap-lru-1.0_jdk5.jar        
dom4j-1.6.1.jar                     
ehcache-core-1.7.1.jar                  
ejb3-persistence-1.0.2.GA.jar                       
groovy-all-1.7.8.jar                    
hibernate-annotations-3.4.0.GA.jar          
hibernate-commons-annotations-3.1.0.GA.jar      
hibernate-core-3.3.1.GA.jar             
hibernate-ehcache-3.3.1.GA.jar              
hibernate-validator-3.1.0.GA.jar            
hsqldb-1.8.0.10.jar                 
javassist-3.11.0.GA.jar                 
jcl-over-slf4j-1.5.8.jar                
jsoup-1.6.1.jar     
jstl-1.1.2.jar  
jta-1.1.jar 
jul-to-slf4j-1.5.8.jar
log4j-1.2.16.jar
mysql-connector-java-5.1.6.jar      
org.springframework.aop-3.0.5.RELEASE.jar
org.springframework.asm-3.0.5.RELEASE.jar
org.springframework.aspects-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.instrument-3.0.5.RELEASE.jar
org.springframework.jdbc-3.0.5.RELEASE.jar
org.springframework.jms-3.0.5.RELEASE.jar
org.springframework.orm-3.0.5.RELEASE.jar
org.springframework.oxm-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
oro-2.0.8.jar
parboiled-core-1.0.2.jar
parboiled-java-1.0.2.jar
pegdown-1.1.0.jar
remark-0.9.3.jar
sitemesh-2.4.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
standard-1.1.2.jar
xmlbeans-2.3.0.jar
xpp3_min-1.1.3.4.O.jar

2.0.0的解决方案

grais war命令中生成的一些jar无法在每个应用程序之间共享。

无法共享的jar ,应该在webapps / appA / WEB-INF / lib中

grails-bootstrap-2.0.0.jar
grails-core-2.0.0.jar
grails-crud-2.0.0.jar
grails-datastore-core-1.0.0.RELEASE.jar
grails-datastore-gorm-1.0.0.RELEASE.jar
grails-datastore-simple-1.0.0.RELEASE.jar
grails-hibernate-2.0.0.jar
grails-logging-2.0.0.jar
grails-plugin-codecs-2.0.0.jar
grails-plugin-controllers-2.0.0.jar
grails-plugin-converters-2.0.0.jar
grails-plugin-datasource-2.0.0.jar
grails-plugin-domain-class-2.0.0.jar
grails-plugin-filters-2.0.0.jar
grails-plugin-gsp-2.0.0.jar
grails-plugin-i18n-2.0.0.jar
grails-plugin-log4j-2.0.0.jar
grails-plugin-mimetypes-2.0.0.jar
grails-plugin-scaffolding-2.0.0.jar
grails-plugin-services-2.0.0.jar
grails-plugin-servlets-2.0.0.jar
grails-plugin-url-mappings-2.0.0.jar
grails-plugin-validation-2.0.0.jar
grails-resources-2.0.0.jar
grails-spring-2.0.0.jar
grails-web-2.0.0.jar

可以共享的jar ,可以在tomcat / shared / lib中

antlr-2.7.6.jar
aopalliance-1.0.jar
asm-3.1.jar
asm-3.3.1.jar
asm-analysis-3.3.1.jar
asm-tree-3.3.1.jar
asm-util-3.3.1.jar
aspectjrt-1.6.10.jar
aspectjweaver-1.6.10.jar
cglib-2.2.jar
commons-beanutils-1.8.3.jar
commons-codec-1.5.jar
commons-collections-3.2.1.jar
commons-dbcp-1.4.jar
commons-el-1.0.jar
commons-fileupload-1.2.2.jar
commons-io-2.1.jar
commons-lang-2.6.jar
commons-lang3-3.0.1.jar
commons-logging-1.1.1.jar
commons-pool-1.5.6.jar
commons-validator-1.3.1.jar
concurrentlinkedhashmap-lru-1.2_jdk5.jar
dom4j-1.6.1.jar
ecj-3.6.2.jar
ehcache-core-2.4.6.jar
fontbox-1.6.0.jar
h2-1.2.147.jar
hibernate-commons-annotations-3.2.0.Final.jar
hibernate-core-3.6.7.Final.jar
hibernate-ehcache-3.6.7.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-validator-4.1.0.Final.jar
javassist-3.12.0.GA.jar
jcl-over-slf4j-1.6.2.jar
jsoup-1.6.1.jar
jstl-1.1.2.jar
jta-1.1.jar
jul-to-slf4j-1.6.2.jar
log4j-1.2.16.jar
mysql-connector-java-5.1.18-bin.jar
oro-2.0.8.jar
parboiled-core-1.0.2.jar
parboiled-java-1.0.2.jar
pdfbox-1.6.0.jar
pegdown-1.1.0.jar
poi-3.7-20101029.jar
poi-ooxml-3.7-20101029.jar
poi-ooxml-schemas-3.7-20101029.jar
remark-0.9.3.jar
sitemesh-2.4.jar
slf4j-api-1.6.2.jar
spring-aop-3.1.0.RELEASE.jar
spring-asm-3.1.0.RELEASE.jar
spring-aspects-3.1.0.RELEASE.jar
spring-beans-3.1.0.RELEASE.jar
spring-context-3.1.0.RELEASE.jar
spring-context-support-3.1.0.RELEASE.jar
spring-core-3.1.0.RELEASE.jar
spring-expression-3.1.0.RELEASE.jar
spring-jdbc-3.1.0.RELEASE.jar
spring-jms-3.1.0.RELEASE.jar
spring-orm-3.1.0.RELEASE.jar
spring-security-core-3.0.7.RELEASE.jar
spring-security-web-3.0.7.RELEASE.jar
spring-tx-3.1.0.RELEASE.jar
spring-web-3.1.0.RELEASE.jar
spring-webmvc-3.1.0.RELEASE.jar
validation-api-1.0.0.GA.jar
xmlbeans-2.3.0.jar
xpp3_min-1.1.4c.jar

2 个答案:

答案 0 :(得分:7)

不幸的是,这在Grails中不起作用,并且还存在一些问题而不是数据源。我们考虑为2.0修复此问题,但仍然存在问题,因此在2.0.x发布之前它将无法运行。

问题是核心Grails jar中的静态变量。由于这些jar中的类是由共享类加载器加载的,因此静态在Tomcat中共享。只要罐子在每个war文件中,它们就会被特定于战争的类加载器加载,并且静态变量之间没有冲突。因此,在修复此问题之前,您需要部署完整的战争,或者至少保留战争中的grails - * .jar文件。

答案 1 :(得分:2)

这是个好主意,我通常会尝试做同样的事情(在各种情况下分享罐子)。但是,并非所有的罐子都可以这种方式共享(它们必须按照它设计)。

  1. 共享库被加载到Classloading层次结构中较高的另一个(共享)类加载器中。如果您尝试按名称查找类,则无法在层次结构中较低的类加载器中找到类。

  2. 某些类/ jar使用Singleton Pattern(或其他类型的状态)。如果你把它们放在战争中,它们将被加载多次并且存在多个单身人士(每个战争一个)。如果将它们放在共享的上下文中,它就不会像这样工作。

  3. 我的建议是只将jar放入已明确为其设计的共享上下文中。测试它,你会看到。祝你好运!