最初のものはクラスであり、2番目のものはインターフェースであることは知っていますが、ポイントは、クライアントサービスがRemoteServiceを拡張し、ServiceImplクラスがRemoteServiceServletを拡張する理由です。
では、実際に舞台裏にあるものは何ですか?!
最初のものはクラスであり、2番目のものはインターフェースであることは知っていますが、ポイントは、クライアントサービスがRemoteServiceを拡張し、ServiceImplクラスがRemoteServiceServletを拡張する理由です。
では、実際に舞台裏にあるものは何ですか?!
リンゴとオレンジを比較しようとしています。これらの概念を明確に理解するには、ドキュメントを読み、簡単なデモプロジェクトを作成してください。
RemoteServiceは、クライアント側の RPC インターフェイスが拡張するインターフェイスです。また、RemoteServiceServletは、サーバー上の RPC サービス実装のサーブレット基本クラスです。クライアントからの要求を逆シリアル化し、発信応答をシリアル化します。
RPC を使用するには、client
パッケージ独自のインターフェイスで作成および定義する必要があり、RemoteServiceインターフェイスを拡張し、サーバーが実装するメソッドを指定する必要があります。
package com.yourproject.client;
import com.google.gwt.user.client.rpc.RemoteService;
public interface CustomInfoService extends RemoteService {
Info getInfo(String infoId);
}
次に、サーバー側でこのインターフェースの実装を提供する必要があります。これは、RemoteServiceServletserver
を拡張し、.CustomInfoService
package com.yourproject.server;
import com.yourproject.client.CustomInfoService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class InfoServiceImpl extends RemoteServiceServlet implements CustomInfoService {
public Info getInfo(String infoId) {
//implementation (for example getting info from database)
}
}
適切に動作するには、サーブレット マッピングを設定し、非同期インターフェイスを作成し、その呼び出しを行い、生成されたコールバックで結果を処理し、RPC を介して渡されるインスタンスのクラスにインターフェイスSerializableまたはIsSerializableを実装する必要があります。
RemoteServiceは、GWT が RPC/RPCAsync インターフェースを見つけられるようにするマーカー インターフェースです (それらを検証するため、または実装とのリンクを行うため)。
RemoteServiceServletは、クライアントからの呼び出しを受け取り、パラメーターを逆シリアル化し、メソッドを呼び出し、メソッドによって返されたもの (例外または返されたオブジェクト) をシリアル化し、それをクライアントに送信するサーブレットです。