我在使用两个不同的struts2 webapps在tomcat中一起启动时遇到了问题。但是当每个webapps独立放置在tomcat的webapps文件夹中时,每个webapp都会正确启动。
我在catalina.out日志中得到以下内容 -
严重:错误filterStart 2009年8月13日下午3:17:45 org.apache.catalina.core.StandardContext start 严重:由于先前的错误,上下文[/ admin]启动失败
环境 - Java1.6,Tomcat6,Struts2.1.6,FC10
网络应用是“管理员”和“用户”。这两个webapps分别在其WEB-INF / lib目录中包含struts2 jar。
web.xml在两个webapps中都包含以下内容 -
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
需要注意的是,“admin”webapp始终无法加载上述错误。如果我从webapps文件夹中删除“用户”webapp,“admin”webapp就可以了。
我还在web.xml中观察了另外一个struts2过滤器 - 如果我从其中一个webapps中删除了web.xml中的struts2过滤器,那么webapps在日志中没有任何错误就开始了(当然我赢了无法在删除过滤器的webapp中使用struts。
我也尝试将struts2 jar移动到tomcat lib并从单个webapps中删除它们,但是存在同样的问题..
任何想法是什么导致了这个问题?
更新:这在Ubuntu OS上运行得很好。但问题仍然存在于FC10和OpenSolaris上。
答案 0 :(得分:1)
我在使用Spring时遇到了类似的问题,并在web.xml中使用了这个监听器类:
org.springframework.web.util.Log4jConfigListener
请参阅Spring Log4jWebConfigurer的文档,其中说您需要为每个web-app定义唯一的“web app root”属性,因此我必须在每个web.xml中都有这样的部分:
<!-- used by Log4jConfigListener -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>myappname.root</param-value>
</context-param>
你在使用Spring吗?如果不希望这会给你一些线索,我不太了解Struts2可能会做类似的事情。请告诉我它是怎么回事!
答案 1 :(得分:0)
感谢alzoid,extraneon和Peter。
我忽略了localhost..log文件中出现的异常。我以为我已将所有struts日志重定向到另一个日志文件,但忽略了在log4j属性文件中提到opensymphony包。
出现原始问题 - xerces-impl jar和属于struts2的其他jar文件存在类加载器问题。因此,当我从两个应用程序中的WEB-INF / lib目录中删除xerces-impl jar时,它开始工作正常!
答案 2 :(得分:0)
在同一服务器上启动两个struts2 Maven应用程序时遇到了同样的问题。 xerces
lib是问题所以我们确实在xalan
依赖项中添加了pom.xml
,一切正常:
<dependency>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
<version>2.7.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>