Gwt-rpc-communication
GWT-RPC通信
GWTベースのアプリケーションは通常、クライアント側モジュールとサーバー側モジュールで構成されます。 クライアント側のコードはブラウザーで実行され、サーバー側のコードはWebサーバーで実行されます。 クライアント側のコードは、サーバー側のデータにアクセスするために、ネットワークを介してHTTP要求を作成する必要があります。
RPC、リモートプロシージャコールは、クライアントコードがサーバー側のメソッドを直接実行できるGWTで使用されるメカニズムです。
- GWT RPCはサーブレットベースです。
- GWT RPCは非同期であり、通信中にクライアントがブロックされることはありません。
- GWT RPC Javaオブジェクトを使用すると、クライアントとサーバー間で直接送信できます(GWTフレームワークによって自動的にシリアル化されます)。
- サーバー側サーブレットは service と呼ばれます。
- クライアント側コードからサーバー側サーブレットのメソッドを呼び出すリモートプロシージャコールは、*サービスの呼び出し*と呼ばれます。
GWT RPCコンポーネント
以下は、GWT RPC通信メカニズムで使用される3つのコンポーネントです。
- サーバーで実行されるリモートサービス(サーバー側サーブレット)。
- そのサービスを呼び出すクライアントコード。
- クライアントとサーバー間で渡されるJavaデータオブジェクト。
GWTクライアントとサーバーは、データを自動的にシリアル化および逆シリアル化するため、開発者はオブジェクトをシリアル化/逆シリアル化する必要がなく、データオブジェクトはHTTPを介して移動できます。
次の図は、RPCアーキテクチャを示しています。
RPCの使用を開始するには、GWTの規則に従う必要があります。
RPC通信ワークフロー
手順1-シリアル化可能なモデルクラスを作成する
クライアント側で、直列化可能なJavaモデルオブジェクトを定義します。
ステップ2-サービスインターフェイスの作成
すべてのサービスメソッドをリストするRemoteServiceを拡張するクライアント側のサービスのインターフェイスを定義します。
アノテーション@RemoteServiceRelativePathを使用して、サービスをモジュールベースURLに関連するリモートサーブレットのデフォルトパスにマップします。
手順3-非同期サービスインターフェイスを作成する
GWTクライアントコードで使用されるクライアント側(上記のサービスと同じ場所)でサービスする非同期インターフェイスを定義します。
ステップ4-サービス実装サーブレットクラスを作成する
サーバー側でインターフェースを実装すると、そのクラスはRemoteServiceServletクラスを拡張する必要があります。
手順5-Web.xmlを更新してサーブレット宣言を含める
Webアプリケーションデプロイメント記述子(web.xml)を編集して、MessageServiceImplサーブレット宣言を含めます。
手順6-アプリケーションコードでリモートプロシージャコールを行う
サービスプロキシクラスを作成します。
AsyncCallback Handlerを作成して、サーバーがクライアントにメッセージを返すRPCコールバックを処理します
ユーザーがUIと対話するときにリモートサービスを呼び出す
RPC通信の完全な例
この例では、簡単な手順でGWTのRPC通信の例を示します。 次の手順に従って、_GWTで作成したGWTアプリケーションを更新します-アプリケーションの作成_の章-
Step | Description |
---|---|
1 | Create a project with a name HelloWorld under a package com.finddevguides as explained in the GWT - Create Application chapter. |
2 | Modify HelloWorld.gwt.xml, HelloWorld.css, HelloWorldl and HelloWorld.java as explained below. Keep rest of the files unchanged. |
3 | Compile and run the application to verify the result of the implemented logic. |
以下は、変更されたモジュール記述子 src/com.finddevguides/HelloWorld.gwt.xml の内容です。
以下は、変更されたスタイルシートファイル war/HelloWorld.css の内容です。
以下は、変更されたHTMLホストファイル war/HelloWorldl の内容です。
変更されたWebアプリケーションデプロイメント記述子 war/WEB-INF/web.xml の内容を更新して、MessageServiceImplサーブレット宣言を含めます。
すべての変更が完了したら、link:/gwt/gwt_create_application [GWT-アプリケーションの作成]の章で行ったように、アプリケーションをコンパイルして開発モードで実行します。 すべてがあなたのアプリケーションでうまくいけば、これは次の結果を生成します-