两个struts2 webapps无法一起启动

时间:2009-08-13 10:11:54

标签: java deployment tomcat struts2 web-applications

我在使用两个不同的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上。

3 个答案:

答案 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>