GWTアプリケーションがクライアントブラウザーで実行されているユースケースがあり、Tomcatを停止して、関連するWARを更新します。
私がしたいのは、Tomcatをロードすると、既存のすべてのクライアントが自動的にリロードされるため、正しいバージョンのアプリケーションが使用されるようになることです。
現在、私は2つの問題に直面しています。
- 現在ロードされているアプリケーションに、廃止されてリロードする必要があることを通知する方法がわかりません。GWT-RPCの失敗の理由が404であるため、リロードする必要があることをアプリで何らかの方法で特定することを考えていますが、これをどのように特定できるかわかりません。もちろん、すべてのGWT-RPCでリロードすることはできません。サーバーが理由もなくダウンしている可能性があり、問題なく1〜2秒でバックアップされるためです。
- 何らかの理由で、moduleName.nocache.jsファイルがキャッシュされるため、手動で更新しても、アプリが存在しないリソース(以前のバージョン)を探しているため、キャッシュを削除すると、サーバーで404リクエストが表示されます。ブラウザのこれは解決されます。これがキャッシュされる理由を誰かが知っていますか?この点に関して、私はサーバー設定に何も変更していません。
編集:
1。これを行うGWTの簡単な方法はないようです。そのため、モジュールが読み込まれるとmodule version、Doubleを受け取り、GWT-RPCが失敗した場合、モジュールはサーバーに現在module versionの不一致がある場合は、ページをリロードします。モジュールバージョンのクエリに使用されるGWT-RPCは一定であり、互換性の理由から変更されません。このように、他のすべてのGWT-RPCメソッドがモジュールを変更した場合でも、このメソッドが有効であることが保証されます。
2. BalusCの提案のおかげで、ファイルは5〜10分間だけキャッシュされるようです。そのため、この領域で非決定論的な動作が見られます。別の質問を開きましたGWTではなくコンテナに関連していることをどこかで読んだときに、単一のjsファイルにヘッダーを設定する方法について説明しました。ありがとう、
イッタイ