9

GWT と OSGi+PAX-Webの問題の解決策を研究しています。特定の問題は、GWT がシリアライゼーション ポリシー ファイルを読み込めず、次のエラーが発生することです。

ERROR: The serialization policy file '/ctx/ctx/6ExxxxxxxxxxxxxxxxF.gwt.rpc' was not found; did you forget to include it in this deployment?

問題は、Equinox OSGi と PAX-WEB の間のどこかにあります。

解決策を見つけるために、GWT-RPC がシリアライゼーション ポリシー ファイルをどのようにロードしているかをよりよく理解したいと思います。

  • 彼らのライフサイクルは何ですか?それらはいつロードされますか?(サーバーの起動時に表示されます。ライフサイクルの特殊性はありますか?リロードしますか?)
  • GWT がこのファイルをスタックにロードする方法は? リクエストの呼び出し履歴のどの時点で? GWT はそれらをどこからロードするかをどのように認識しますか? このファイルを探す場所を GWT に教えてもらえますか?

(免責事項: 生成されたファイルに関する gwt ドキュメントを読みました[2]。より低レベルの詳細を探しています: 発生しているエラーは HttpContext.getResource() に対処する必要があるという印象があります)

4

3 に答える 3

11

それはすべてにありRemoteServiceServletます。

彼らのライフサイクルは何ですか?それらはいつロードされますか?(サーバーの起動時に発生しているようです。ライフサイクルに特殊な点はありますか?リロードしますか?)

それらは最初の使用時にロードされ(最初の要求が受信され)、サーブレットのフィールドにキャッシュされるため、それらのライフサイクルはサーブレット自体の1つに関連付けられます。

GWTはこのファイルをスタックにどのようにロードしますか?リクエストのコールスタックのどの時点で?GWTはそれらをどこからロードするかをどのように知るのですか?このファイルを探す場所をGWTに伝えることはできますか?

servlet.getServletContext().getResourceAsStream。これは、オーバーライドすることでカスタマイズできますdoGetSerializationPolicy(JavaDocで述べられているように)。
ファイル名(リソースURL)は、リクエストのパスとX-GWT-Permutationリクエストヘッダーから作成されます。

于 2012-06-21T14:37:16.240 に答える
4

EAR ファイルで .rpc ファイルを探したところ、ファイル名がエラーとは異なることがわかりました。

解決策: ブラウザのキャッシュをクリアして更新しました。

于 2013-02-08T01:20:50.543 に答える
4

私のニックが私のために働いていた場合の回答。

いくつかのクラスで長い間 Web アプリを実行していました。

後でサーバーに新しいクラスを追加しましたが、Web アプリを起動しようとすると、次のエラーが表示されました。

エラー: シリアル化ポリシー ファイル '/newapp/C3055CD048198D732D03CA6901E503 86.gwt.rpc' が見つかりませんでした。この展開に含めるのを忘れましたか?

警告: モジュール 'http://10.10.1.23:9200/newapp/' の SerializationPolicy 'C3055CD048198D732D03CA6901E5038 6' を取得できませんでした。従来の 1.3.3 互換のシリアル化ポリシーが使用されます。その結果、SerializationExceptions が発生する場合があります。

次に、シークレットウィンドウでアプリを起動しました。これにより、キャッシュがクリアされ、うまくいきました。

于 2013-09-10T18:40:51.880 に答える