2

最初のものはクラスであり、2番目のものはインターフェースであることは知っていますが、ポイントは、クライアントサービスがRemoteServiceを拡張し、ServiceImplクラスがRemoteServiceServletを拡張する理由です。

では、実際に舞台裏にあるものは何ですか?!

4

2 に答える 2

5

リンゴとオレンジを比較しようとしています。これらの概念を明確に理解するには、ドキュメントを読み、簡単なデモプロジェクトを作成してください。

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を実装する必要があります。

于 2012-11-14T16:09:53.547 に答える
3

RemoteServiceは、GWT が RPC/RPCAsync インターフェースを見つけられるようにするマーカー インターフェースです (それらを検証するため、または実装とのリンクを行うため)。

RemoteServiceServletは、クライアントからの呼び出しを受け取り、パラメーターを逆シリアル化し、メソッドを呼び出し、メソッドによって返されたもの (例外または返されたオブジェクト) をシリアル化し、それをクライアントに送信するサーブレットです。

于 2012-11-14T09:15:34.447 に答える