0

アプリケーションで Prime Face を使用しています。Tomcat サーバー (6) を Glass fish (v2.1) に移行する仕様があり、ネット Bean で実行しました。

しかし、プロジェクトの実行中に 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 は、JSF 1.2 がバンドルされた本格的な Java EE 5 コンテナとして出荷されます。あなたのwebappは明らかにJSF 2.0ベースの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/サーブレット コンテナーであり、JSF がバンドルされた状態ではなく、JSP/サーブレットのみが付属しているためです。そのため、Tomcat では JSF との潜在的なバージョンの競合はありません。

Glassfish に、バンドルされた独自の JSF を使用するのではなく、Web アプリケーションにバンドルされた JSF を使用するように指示する必要があります。次のエントリを<sub-web-app>of/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 に答える