0

Winstone サーバーで JSF2 アプリケーションを公開できません。

サーバーは正常に構成されており、削除すると

<load-on-startup>1</load-on-startup>

web.xml から、正常に起動します。

ここに画像の説明を入力

しかし、indew.xhtml を起動しようとすると、サーバーが次のように報告します。

ここに画像の説明を入力

私のweb.xmlの一部:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
         id="WebApp_ID" version="2.5">
  <display-name>PIA</display-name>
  <session-config>
    <session-timeout>60</session-timeout>
  </session-config>
  <welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>

  <context-param>
    <description>State saving method: 'client' or 'server'.</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
  </context-param>
</web-app>

更新:試してみましたがwinstone 1.0.0.jar、これが報告されます:

ここに画像の説明を入力

しかしslf4j-api-1.6.4.jarslf4j-log4j12-1.6.4.jar私は WEB-INF\lib フォルダにあります...どこに問題があるのでしょうか?

4

1 に答える 1

1

これを追加してweb.xml、JSF ファクトリを構成することになっているリスナーを明示的に登録します。

<listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>

<load-on-startup>別の可能な解決策は、からを削除することですがFacesServlet、Winstone を使用したことがないため、そのサーバーで動作するかどうかは保証できません。

この回避策は通常、適切なサーバーでは必須ではありませんが、貧弱なサーバーでは必須です。詳細な背景情報については、「could not find Factory: javax.faces.context.FacesContextFactory 」も参照してください。


コメントに従って更新します。リスナーを追加した後、例外は消えましたが、Error instantiating listener class: com.sun.faces.config.ConfigureListenerスタックトレースなしで表示されます。スタックトレースの飲み込みは、 1.0.0で修正された Winstone のバグのようです。試してみると、問題の本当の原因が表示されるはずです。


質問の更新による更新 2、本当の原因はNoClassDefFoundErroronのようorg.slf4j.loggerFactoryです。ただし、これは Mojarra ではまったく使用されていません。スタックトレースは、リスナーをロードする前にこれが発生していることも示しています。つまり、これは Winstone に関連する別の問題である可能性があります。どうやら Winstone自体がそのライブラリを必要としているようです。の代わりに Winstone のランタイム クラスパスに追加します/WEB-INF/lib

于 2011-12-09T15:24:09.170 に答える