1

シナリオは次のとおりです。

現在、非クラスター環境でのアプリケーションの実行に取り組んでいます。しかし今は、既存のアプリケーションをクラスター化された weblogic 環境にデプロイできるようにする必要があります。

これは JSF ベースのアプリケーションであり、多くのマネージド Bean が含まれています。問題は、クラスター化された環境がまだセットアップされておらず、3 週間後に到着する予定であることです。

Weblogic クラスタでは、この問題に必ず遭遇すると思います

java.io.NotSerializableException: 

私の質問は、クラスター環境にデプロイせずに、既存のクラスのどれがクラスター環境で失敗するかを調べる方法があるかどうかです。

クラスター化された環境で失敗しないように、クラスのすべてのメンバー変数がシリアル化可能かどうかをテストする方法があるかどうかはわかりません。

4

1 に答える 1

0

Mojarra を使用する場合、次のコンテキスト パラメータを使用して、常に JSF 状態をシリアル化するように指示できます。

<context-param>
    <param-name>com.sun.faces.serializeServerState</param-name>
    <param-value>true</param-value>
</context-param>

(MyFaces に相当するものは ですがorg.apache.myfaces.SERIALIZE_STATE_IN_SESSION、これは既定でtrue既に)

テスト中、NotSerializableExceptionマークされていないインスタンスを取得しますSerializable。通常、シリアライズ可能にする必要があるのは、ビューおよびセッション スコープ Bean とそのすべてのプロパティです。

プロパティをマークすることは正しい解決策ではないことに注意してください。逆シリアル化後(ビューの復元後)にtransient残りますが、これは間違っています。nullただし、他に方法がない場合 (サードパーティ API など) もあります。その場合は、次の解決策のいずれかを検討することをお勧めします。

ビジネス サービスに関しては、EJB または CDI を使用している限り、ビジネス クラスをシリアライズ可能とマークする必要はありません。とにかく、それらはシリアライズ可能なプロキシとして注入されています。

于 2013-09-09T10:39:49.890 に答える