1

RequestBuilde現在、 を使用してサーブレットにメッセージを送信するGWT アプリケーションがあり(POSTおよびを使用GET)、サーブレット (doPostおよび内doGet) はリクエストを「一時停止」し (これはサーブレット 3.0 仕様を使用して行われます)、キューに追加します。 .
さらに、バックグラウンドで実行され、新しいデータがあるときにリクエストを「再生」するデーモンスレッドがあります。
これは、今のところ文字列を送信しているだけで、RPC メカニズムを利用してオブジェクトを送信したいという事実を除けば、私にとってはうまく機能します。
私の質問は次のとおりです。拡張するクラス
を作成した場合、どのように処理する必要がありますか?myServiceImplRemoteServiceServletdoPostdoGet
非同期サポートを利用するためにリクエストを一時停止する必要があります。これはどこで行う必要がありますか? this.getThreadLocalRequest()クラスの RPC メソッドでメソッドを呼び出すことmyServiceImplもできますが、それがどれほど賢明かはわかりません。
GWT がその非同期インターフェイスのクライアント側からの呼び出しをどのように処理するかを理解しているかどうかさえわかりません。サーブレットの例を呼び出しdoGetて、必要な RPC メソッドを呼び出すことを確認しますか?
この RPC ビジネスが正確にどのように機能するかについて、より詳細な技術情報を見つけることができないというだけです。 どんな貸し手
でも感謝します

4

2 に答える 2

5

RPCを理解するには、POSTとGETを忘れて、動作が異なります(つまり、プログラミングの観点からです。内部的にはRPCを使用しますが、エキゾチックなことをしたい場合を除いて、表示したり理解したりする必要はありません)。RPCの出発点としては、GWTドキュメントが適しています:http ://code.google.com/webtoolkit/tutorials/1.6/RPC.html

あなたに要約を与えるために。RPCを使用する場合、サーブレットは、を拡張するだけでなく、myServiceImplという名前のインターフェイスのメソッドを実装する必要があります。メソッドは、サーバーに送信するデータを引数として取得します。myServiceRemoveServiceServlet

インターフェイスの横にmyServiceインターフェイスを作成する必要がありmyServiceAsyncます(両方のインターフェイスがクライアントサブパッケージに含まれている必要があります)。このインターフェイスには、各メソッドが戻り、追加の最後の引数があることを除いmyServiceAsyncて、インターフェイスと同じメソッドが含まれている必要があります。myServicevoidAsyncCallback callback

クライアントでは、GWTをインストルメント化してGWT.createを介してRPCを生成する必要があります(詳細については、ドキュメントを参照してください)。

RPCを使用するには、クライアントコードのインターフェイスでメソッドを呼び出すとmyServiceAsync、GWTがRPCをサーブレットに送信します。次に、サーブレットは、クライアントに渡した引数を使用してマッチングメソッドを呼び出します。これは非同期で行われます。したがって、クライアントは呼び出しから直接戻ります。

サーバーが結果を送り返すとき、渡したコールバックmyServiceAsyncが使用されるかOnError、またはOnSuccess呼び出されます。OnErrorサーバー側のメソッドがエラーをスローした場合、それ以外の場合OnSuccess。はOnSuccess、サーブレットによって実装されたメソッドで返されたものからの戻り値を引数として持ちます。

于 2009-10-11T16:18:48.393 に答える
1

当時私が持っていた主な誤解は、GWT RPC が (内部的に) サーブレット メカニズム上に構築されているという事実に関連していたと思います。したがって、GWT RPC はサーブレット上に構築されていたため、非同期サーブレットでそのメカニズムを使用しようとすることは当時不可能でした。 2.5(これも当時)。

于 2012-11-11T07:35:13.457 に答える