何が一番役立つかわかりません。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のチュートリアルが最高だと思います。コピー&ペーストしてください。全体を理解できるようになるまで、試して変更してください。