0


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

耳朵
| - /lib/someProject.jar(由 confictEJB 和 EJB 使用)
| - 冲突EJB.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 等)
| - 元信息
| - 网络信息
    | -库
        | - struts.jar (an others)
    | - struts-config.xml
    | - struts-config_1_2.dtd
    | - glassfish-web.xml
    | - web.xml

有谁知道缺少什么或我可以在哪里检查任何进一步的配置?任何帮助是极大的赞赏!谢谢!

4

1 回答 1

0

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

我必须将 wars WEB-INF/lib forlder 中的每个 lib 放到 ears lib 文件夹中才能找到。含义 - 如 Maven 页面中所述 - 我必须将战争使用的所有依赖项的范围设置为<scope>provided</scope>并将依赖项添加到pom.xml.

所以耳朵包必须是这样的:

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

于 2012-04-30T12:45:07.550 回答