如果部署在ear文件中,ActionServlet无法访问struts-config.xml

时间:2012-04-23 12:01:41

标签: java-ee glassfish struts glassfish-3


我正在将JavaEE项目从Sun Application Server 9.1迁移到Glassfish 3.1.2。该项目具有以下结构:


| - /lib/someProject.jar(由confictEJB和EJB使用)
| - confictEJB.jar
| - EJB.jar
| - webProj.war

罐子和耳朵是用maven建造的。问题是,这在SAS 9.1和Glassfish 2.1中没有错误地部署。但是在Glassfish 3.2.1中我收到了这个错误:

#|2012-04-23T13:44:29.562+0200|SEVERE|glassfish3.1.2|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=34;_ThreadName=Thread-2;|WebModule[/ArchiveTool]PWC1396: Servlet /ArchiveTool threw load() exception
javax.servlet.UnavailableException: Parsing error processing resource path /WEB-INF/struts-config.xml
at org.apache.struts.action.ActionServlet.handleConfigException(ActionServlet.java:739)
at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:715)
at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:670)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:329)

看起来ActionServlet无法在GF3.2.1中解析/找到struts-config.xml。到目前为止我做了什么:

  • 引用struts-config.xml
  • 的DOCTYPE中的本地DTD
  • struts-config.xml的一般语法验证 - >没有错误
  • 针对DTD验证struts-config.xml - >没有错误
  • 将webProj.war独立部署到Glassfish - >部署没有错误

战争项目的结构:

webProj.war
| - 一些东西(图像,CSS,js等)
| - META-INF
| - WEB-INF
| - lib
| - struts.jar(其他人)
| - struts-config.xml
| - struts-config_1_2.dtd
| - glassfish-web.xml
| - web.xml

有没有人知道什么是遗漏或我可以检查任何进一步的配置? 任何帮助是极大的赞赏! 谢谢!

1 个答案:

答案 0 :(得分:0)

好的,这给了我解决方案的提示: Maven - Creating Skinny WARs

我必须将每个来自战争WEB-INF / lib forlder的lib放到要找到的ear lib文件夹中。含义 - 如Maven页面中所述 - 我必须将war使用的所有依赖关系的范围设置为<scope>provided</scope>,并将依赖关系添加到pom.xml中的这个jar中,这包括耳朵。< / p>

所以耳包必须如下所示:


| - / lib
| - someProject.jar(由confictEJB和EJB使用)
| - struts.jar
| - confictEJB.jar
| - EJB.jar
| - webProj.war

相关问题