0

Tomcat の下で RAP/RWT を使用する設計に取り組んでいます。私は今 RAP を学んでいますが、いくつかの疑問が頭に浮かびます。

私のアプリケーションには、特定のソースから継続的にデータを収集するバックエンドがあります。一方、webapp として実行されるフロントエンド (RWT スタンドアロン アプリケーション、またはワークベンチ機能を備えた RAP、まだ決定されていません) を作成したいと考えています。

  • 最初の質問: バックエンドを別のプロセスとして保持し、フロントエンドの RAP アプリケーションが何らかの方法でそれと通信できるようにする必要がありますか? それとも、すべてを RAP アプリケーションに統合できますか? すべてを統合すると、2 番目の質問につながります。

  • 2 番目の質問: RAP アプリケーション内から、アプリを保持しているブラウザー ウィンドウ/タブが閉じられていることをどのように検出できますか? ユーザーがグラフィカル インターフェイスを閉じる (つまり、ブラウザを閉じる) ときに、リソースのクリーンアップを行いたいと考えています。ApplicationWorkbenchWindowAdvisor#preWindowShellCloseRWT スタンドアロン アプリケーションに相当するものは見つかりません。アプリケーションの起動時に検出されたものと同じです。一般に、RWT スタンドアロン アプリケーションで webapp ライフサイクルに従うためのコールバックはありますか?

助けてくれてどうもありがとう!

4

2 に答える 2

1

最初のポイントについて: EJB を使用する場合、リクエスト スレッドから直接 Java EE コンテキストにしかアクセスできないことに注意してください。これは、 JEE_COMPATIBILITYモードで実行している場合は問題ありませんが、 SWT_COMPATIBILITYモードでは、 を介して EJB にアクセスする必要がある場合がありますRWT.requestThreadExec( Runnable );

2 番目の質問についてですが、RAP サーバーは現在、ブラウザを閉じても通知されません。この問題については、バグ 284273 - ブラウザを閉じる際のセッション キル メカニズム で説明されています。IIRC では、すべてのブラウザーで機能する信頼できる方法が見つからなかったため、まだ実装されていません。

a) JSExecutor を使用して、ブラウザーのクローズ時にリクエストを送信する JavaScript をクライアントに配置し、b) これらのリクエストをリッスンしてセッションを終了する PhaseListener を使用して、独自のソリューションを実装できます。

于 2012-08-23T13:31:58.063 に答える