两个servlet在tomcat上共享相同的jar吗?

时间:2014-04-24 20:28:57

标签: java tomcat servlets gwt

看来我在Tomcat中有一个jar冲突。

事实:

  • 在开发模式下运行良好的GWT应用程序。
  • 在独立服务器上以相同的应用程序在编译模式下正常运行。
  • 在运行其他应用程序的测试服务器上调用时,同一个应用程序会启动异常:

    Caused by: org.apache.commons.logging.LogConfigurationException: java.lang.ClassNotFoundException: org.apache.commons.logging.impl.Log4jFactory (Caused by java.lang.ClassNotFoundException: org.apache.commons.logging.impl.Log4jFactory)
        at org.apache.commons.logging.LogFactory.createFactory(LogFactory.java:1276)
        at org.apache.commons.logging.LogFactory$2.run(LogFactory.java:1065)
    

我以为Tomcat正在为每个servlet隔离Jar,它似乎没有,我错了......

app1正在使用:

commons-beanutils-1.8.3.jar
commons-collections-3.2.1.jar
commons-configuration-1.10.jar
commons-dbcp-1.2.2.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
commons-pool-1.5.3.jar
gwt-servlet.jar
hibernate-validator-4.1.0.Final.jar
hibernate-validator-4.1.0.Final-sources.jar
json-simple-1.1.1.jar
log4j-1.2.16.jar
postgresql-9.1-901-1.jdbc4.jar
reds_da-1.0.0.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar

app2正在使用:

activation-1.1.jar
avalon-framework-4.1.4.jar
commons-beanutils-1.8.0.jar
commons-codec-1.4.jar
commons-collections-3.2.1.jar
commons-configuration-1.0-dev-3.20030607.194155.jar
commons-dbcp-1.2.2.jar
commons-digester-2.0.jar
commons-fileupload-1.0.jar
commons-grant-1.0-beta-4.jar
commons-httpclient-2.0-beta1.jar
commons-io-2.0.1.jar
commons-jelly-20030902.160215.jar
commons-jelly-tags-antlr-20030211.143720.jar
commons-jelly-tags-jsl-20030211.143151.jar
commons-jelly-tags-log-20030211.142821.jar
commons-jelly-tags-velocity-20030303.205659.jar
commons-jelly-tags-xml-20030211.142705.jar
commons-jxpath-1.3.jar
commons-lang-2.6.jar
commons-logging-1.0.4.jar
commons-logging-api-1.0.4.jar
commons-pool-1.5.3.jar
commons-validator-1.3.1.jar
core-2.0.jar
cryptix-3.2.0.jar
cssparser-0.9.5.jar
dom4j-1.6.1.jar
ecj-3.7.2.jar
ecs-1.4.2.jar
excalibur-component-2.1.jar
excalibur-instrument-api-2.1.jar
excalibur-instrument-mgr-api-2.1.jar
excalibur-instrument-mgr-impl-2.1.jar
excalibur-logger-2.1.jar
excalibur-pool-api-2.1.jar
excalibur-pool-impl-2.1.jar
excalibur-pool-instrumented-2.1.jar
freemarker-2.3.8.jar
htmlunit-2.9.jar
htmlunit-core-js-2.9.jar
httpclient-4.1.2.jar
httpcore-4.1.2.jar
httpmime-4.1.2.jar
itext-2.1.5.jar
javase-2.0.jar
javax.mail-api-1.5.1.jar
jcs-1.3.jar
jericho-html-3.3.jar
jndi-1.2.1.jar
json-20090211.jar
jsoup-1.6.1.jar
junitperf-1.8.jar
jython-2.1.jar
log4j-1.2.13.jar
logkit-1.0.1.jar
mail-1.4.jar
mailapi-1.5.1.jar
nekohtml-1.9.15.jar
odfdom-java-0.8.7.jar
oro-2.0.7.jar
poi-3.1-FINAL.jar
poi-contrib-3.1-FINAL.jar
poi-scratchpad-3.1-FINAL.jar
postgresql-9.1-901-1.jdbc4.jar
qrgen-1.3.jar
reds_da-1.0-SNAPSHOT.jar
sac-1.3.jar
serializer-2.7.1.jar
smtp-1.5.1.jar
stratum-1.0-b3.jar
torque-3.3.jar
turbine-2.3.3.jar
util-1.4-SNAPSHOT.jar
velocity-1.3.1.jar
velocity-dvsl-0.45.jar
village-3.3.jar
xalan-2.7.1.jar
xercesImpl-2.9.1.jar
xml-apis-1.0.b2.jar
xmlParserAPIs-2.0.2.jar
xmlpull-1.1.3.1.jar
xmlrpc-2.0.jar
xom-1.1.jar
xpp3_min-1.1.4c.jar
xstream-1.4.5.jar

显然,似乎

commons-configuration-1.10.jar
log4j-1.2.16.jar
commons-logging-1.1.1.jar

是冲突的。

2 个答案:

答案 0 :(得分:0)

dev mode中挑选的Log4jFactory gwt-dev.jar课程中,为什么它的工作正常,但在tomcat服务器上你还没有。

可能是服务器上冲突的罐子。只需从战争中移除gwt-dev.jar,因为只需dev mode

enter image description here

答案 1 :(得分:0)

我希望JAR之间发生冲突,我在进一步调查后对此问题的描述不同:

Deployment issue with GWT app