3

この問題の解決を続けます。MojarraMyFacesに置き換え、JDKをアップグレードしました。サーバーの再起動後にフォームで作業を続けると、次のエラーが表示されます。

エラーが発生しました:

/food.xhtmlNo saved view state could be found for the view identifier: /food.xhtml

Caused by:
javax.faces.application.ViewExpiredException - /food.xhtmlNo saved view state could be found for the view identifier: /food.xhtml

コンソール

SEVERE: Exception loading sessions from persistent storage
java.lang.IllegalStateException: unread block data
    at java.io.ObjectInputStream$BlockDataInputStream.setBlockDataMode(ObjectInputStream.java:2376)

スタックトレース:

javax.faces.application.ViewExpiredException: /food.xhtmlNo saved view state could be found for the view identifier: /food.xhtml
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:128)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

そして私の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_3_0.xsd" 
         id="WebApp_ID" version="3.0">

  <display-name>PORTAL</display-name>
  <session-config>
    <session-timeout>180</session-timeout>
  </session-config>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.xhtml</welcome-file>
    <welcome-file>index.htm</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>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>

  <context-param>
    <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>

そのようなエラーレポートに出会ったことはありませんか?

4

5 に答える 5

5

返信が少し遅れるかもしれませんが、同じ問題があり、解決するのにかなりの時間を費やしました。だから、これは他の誰かを助けるかもしれないと思いました。

デフォルトでMyFacesは、状態がサーバーに保存されている場合でも、状態のシリアル化は実行されますが、そうではありMojarraません。したがって、シリアル化できないBeanがある場合、またはシリアル化できない他のBeanを使用している場合は、そのエラーが表示されます(サーバーはオブジェクトをシリアル化できません)。

シリアル化を無効にできるので、のようMyFacesに機能しMojarraます。このリンクを確認してください:ViewScopedBeanはNotSerializableExceptionを引き起こします

于 2012-10-04T08:01:40.510 に答える
3

ここで発生する問題は典型的なものであり、デフォルトでMyFacesがビューステートをエンコードするためのランダムなシークレットを生成するために発生します。サーバーが再起動するたびに、新しいランダムシークレットが生成されます。

これを解決するには、いくつかのWeb構成パラメーター、特にorg.apache.myfaces.SECRETとorg.apache.myfaces.MAC_SECRETをセットアップする必要があるため、サーバーを再起動するたびに同じシークレットが使用されます。クロサギにも似たようなものがありますが、現時点ではパラメータ名を覚えていません。

このページを確認してくださいMyFacesでアプリケーションを保護してください。ここで、暗号化を設定するために必要なすべての詳細を見つけることができます。

ユーザーと開発メーリングリストに登録すると、MyFacesに関する質問を送信できます。

于 2011-07-11T02:00:51.347 に答える
3

すでに述べたように、もう1つの答えとして、SECRETを定義する必要があります。Secure_Your_Applicationの指示に従いました。以下の行をに追加しましたweb.xml(それに応じてシークレットを変更します)。そして、無制限の強度のJCEポリシーファイルをダウンロードすることを忘れないでください。

<context-param>
  <param-name>org.apache.myfaces.ALGORITHM</param-name>
  <param-value>AES</param-value>
</context-param>
<!-- Defines the secret (Base64 encoded) used to initialize the secret key
     for encryption algorithm. The size of it depends on the algorithm used for encryption -->
<context-param>
  <param-name>org.apache.myfaces.SECRET</param-name>
  <param-value>MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz</param-value>
</context-param>
<!-- Define the initialization code (Bas64 encoded) that are used to initialize the secret key used
     on the Message Authentication Code algorithm. The size of it depends on the algorithm used for mac calculation -->
<context-param>
  <param-name>org.apache.myfaces.MAC_SECRET</param-name>
  <param-value>YWJjZDEyMzQ=</param-value>
</context-param>
于 2012-03-17T02:01:20.530 に答える
0

解決策:どのクラスをシリアル化できるか、どのクラスをシリアル化できないかを検討する必要がありました。

于 2012-07-01T13:00:26.230 に答える
0

通常、このエラーが発生します。myfaces1.2とwebsphere7を使用していますが、サーバーを再起動しませんでした。最初にサーバーを停止してから、再起動するのではなく、再起動しました。それはうまくいった。

于 2012-08-28T14:27:40.373 に答える