0

我在我的应用程序中使用 Prime 面孔。我有将 Tomcat 服务器(6)迁移到 Glass fish(v2.1)的规范,我已经在 net beans 中完成了。

但是我在运行项目时收到 HTTP 状态 503 错误。(使用tomcat 6时工作正常)

在控制台中获取此信息

Initializing Mojarra (1.2_13-b01-FCS) for context '/Prime'
WebModule[/Prime]PWC1275: Exception sending context initialized event to listener
instance of class com.sun.faces.config.ConfigureListener

Caused by: org.xml.sax.SAXParseException: cvc-enumeration-valid: Value '2.0' is not
facet-valid with respect to enumeration '[1.2]'. It must be a value from the enumeration.

为什么我收到这个错误,请给我一个解决方案。

谢谢你。

4

1 回答 1

1

Glassfish v2 是一个完整的 Java EE 5 容器,捆绑了 JSF 1.2。您的 webapp 显然是一个基于 JSF 2.0 的应用程序,它在/WEB-INF/lib. 这当然会与 Glassfish 自己的具有此类错误的 JSF 1.2 库冲突。您的特定错误是<faces-config version="2.0">由 JSF 1.2 不支持的错误引起的。

虽然向后兼容 Java EE 5,但 JSF 2.0 是 Java EE 6 的一部分,因此默认情况下仅捆绑在 Glassfish v3 等中。它在 Tomcat 中工作显然是因为 Tomcat 作为准系统 JSP/Servlet 容器不附带 JSF,而仅附带 JSP/Servlet。所以在 Tomcat 中不会有与 JSF 的潜在版本冲突。

您需要告诉 Glassfish 它不应该使用自己捆绑的 JSF,而是使用 webapp 捆绑的 JSF。您可以通过将以下条目添加到<sub-web-app>文件/WEB-INF/sun-web.xml中来做到这一点:

<class-loader delegate="false"/>
<property name="useBundledJsf" value="true"/>

如果您没有此文件,可以在此Glassfish v2.1.1 部署指南底部找到示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC '-//Sun Microsystems, Inc.//DTD 
   Application Server 9.0 Servlet 2.5//EN' 
   'http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd'>
<sun-web-app>
   <!-- Your config here -->
</sun-web-app>
于 2013-01-29T13:06:55.203 回答