0

を使用してホームページのバックエンドを作成しようとしていますGWTGoogle Web Applicationサンプルコードなしでinを作成しEclipse、サービスを追加したいのですが、開発者のGoogleガイドが役に立ちません。インターフェイスを追加する場所と、それが正確にどのように機能するかはわかりません。

Googleのドキュメントを正しく理解している場合は、moduleとを追加する必要がありentry point classますが、それは正しいですか?いくつかのヒントを教えて、rpcサービスの作成方法を教えていただければ幸いです。

4

3 に答える 3

1

Eclipseの「新規プロジェクト」ウィザードで「プロジェクトサンプルコードの生成」をオンにして新しいGWTプロジェクトを作成すると、サンプルメソッドを使用して完全に機能するRPCサービスが含まれ、必要に応じて調整またはコピーできます。

于 2012-09-19T11:13:28.933 に答える
0

何が一番役立つかわかりません。GWTアプリケーション用のRPCサービスを作成するには、Google開発者ガイドで十分でした(少なくともバージョン1.6で使用を開始したとき)。

一般的なAPP

モジュール:は.gwt.xmlファイルです。はい、必要になります。GWTコンパイラはそれを自動的に検出し、すべてのGWTコードをコンパイルしようとします(<source>要素は、JSに変換されるJavaコードを含むサブパッケージを示します)。また、どのクラスがEntryPointインターフェイスを実装しているかもわかります。onModuleLoadは、JavaScriptがクライアントページで実行されるときに実行されるコードになります。

RPC

さて、最初にUIのことを試してから、十分に自信があるときにサーバーのことを試してください。とにかくスキームは次のとおりです。

interface MyService extends RemoteService {
 List<String> doSomething(String sample, int other);
}

@RemoteServiceRelativePath("../path/to/servlet") // see later
intercace MyServiceAsync {
 void doSomething(String sample, int other, AsyncCallback<List<String>> callback);
}

これらはインターフェースです。後で非同期のものです。これは、クライアント側から使用するものです。結果を受け取る(後でいつかはわかりません)AsyncCallbackの実装を常に呼び出して渡します。

最初のインターフェースは同期インターフェースです。それはあなたがサーバーに実装する必要があるものです。RemoteServiceServletクラス(すでにすべての値の処理を行っているサーブレットの実装)から継承し、インターフェースを実装する必要があります。残りはGWTコードが(ほぼ)行います。

public class ServiceImpl extends RemoteServiceServlet implements MyService
{
 // implement the method normally
}

クライアントから、サービスプロキシを作成する必要があります。

private static MyServiceAsync MY_SERVICE = GWT.create(MyService.class);

はい。GWTがMyserviceAsyncとMyServiceが連携していることをどのように知っているかは奇妙だと思います。心配しないでください。できます :)

次のようなサービスを使用してください。

MY_SERVICE.doSomething("value", 111, new AsyncCallback<List<String>>() {
   // note that this code executes some time in the future when response from server is back
   public void onSuccess(List<String> result) {
      Window.alert("Server answered with " + result.size() + " elements!");
   }
   public void onFailure(Throwable t) {
      Window.alert("Server failed: " + t.getMessage());
   }
}

サーバーへのパス

そのサーブレット実装が@RemoteServiceRelativePathで示されるURLをリッスンするようにアプリを構成する必要があります。これは、クライアントが要求を行う場所を認識し、サーバーがその要求に参加するサーブレットを認識する方法です。私は使用することをお勧めします:

../my-service.gwt相対パスとして(GWTモジュールはで公開されます<ROOT>/module_name

サーブレットを使用するようにWebアプリを構成する/my-service.gwt

しかし、それは完全にあなたの好み次第です:)

とにかく、Googleのチュートリアルが最高だと思います。コピー&ペーストしてください。全体を理解できるようになるまで、試して変更してください。

于 2012-09-19T11:26:37.200 に答える
0

記憶がないので、目の前で日食をしないでください。最初に、生成されたテストコードを使用してテストプロジェクトを作成します。後で削除できます。はい、モジュールを追加する必要があります。クライアントで非同期呼び出し用の2つのインターフェースを作成し、サーバー側で継承します。私があなたの質問を正しく理解したことを願っています。

于 2012-09-19T11:10:39.213 に答える