カスタマイズしたサーブレットでGWT RPCメカニズムを使用する
-
07-07-2019 - |
質問
現在、 RequestBuilde
を使用するGWTアプリケーションがあります。
私が持っているサーブレット( POST
および GET
を使用)と私のサーブレットにメッセージを送信する
( doPost
および doGet
)" pauses"リクエスト(これは、
Servlets 3.0仕様)、キューに追加します。
さらに、私は
バックグラウンドで実行され、「再生」されるデーモンスレッド。リクエスト
新しいデータがあるとき。
これは私がちょうど送信しているという事実から離れて私のためにうまく機能します
今のところ文字列とRPCメカニズムを利用して送信したい
オブジェクト。
私の質問はこれです:
拡張する myServiceImpl
クラスを作成した場合
RemoteServiceServlet
doPost
および doGet
を処理する方法はありますか?
非同期サポートを利用するには、リクエストを一時停止する必要があります。これを達成する必要がありますか?私は多分 myServiceImpl
クラスのRPCメソッドで this.getThreadLocalRequest()
メソッドを呼び出す必要がありますが、それがどれほど賢いのかわかりません。
じゃない
GWTがクライアント側からの呼び出しをどのように処理するかを理解していることを確認してください
その非同期インターフェイスの。
万一、サーブレットの例として doGet
を呼び出して、
必要なRPCメソッドを呼び出していることを確認しますか?
物事の混乱を作った場合、私はそれを見つけることができないというだけでごめんなさい
このRPCビジネスが正確に機能する方法としての詳細な技術情報
貸し手に感謝します
イッタイ
解決 2
当時の主な誤解は、GWT RPCが(内部的に)サーブレットメカニズムに基づいているため、非同期サーブレットでそのメカニズムを使用しようとすることは当時GWT RPCだったため不可能だったと思いますサーブレット2.5で構築されました(当時も)。
他のヒント
RPCを理解するために、POSTとGETを忘れると動作が異なります(つまり、プログラミングの観点からです。内部的には使用しますが、エキゾチックなことをしたい場合を除いて、理解する必要はありません)。 RPCの適切な出発点はGWTドキュメントです: http://code.google .com / webtoolkit / tutorials / 1.6 / RPC.html
要約を提供します。 RPCを使用する場合、サーブレットは RemoveServiceServlet
を拡張する以外に、 myServiceImpl
という名前のインターフェイスのメソッドを実装する必要があります。メソッドは、サーバーに送信するデータを引数として取得します。
myService
インターフェースの横に、 myServiceAsync
インターフェースを作成する必要があります(両方のインターフェースはクライアントサブパッケージにある必要があります)。この myServiceAsync
インターフェイスには、各メソッドが void
を返し、最後の引数 AsyncCallbackコールバック
。
クライアントでは、GWTをインストルメントしてGWT.create経由でRPCを生成する必要があります(詳細についてはドキュメントを参照してください。
RPCを使用するには、クライアントコードで myServiceAsync
インターフェースのメソッドを呼び出すと、GWTがそれをサーブレットに送信します。その後、サーブレットは、クライアントに渡した引数を使用して一致するメソッドを呼び出します。これは非同期で行われます。したがって、クライアントは呼び出しから直接戻ります。
サーバーが結果を返送するとき、渡したコールバック myServiceAsync
が使用されるか、 OnError
または OnSuccess
が呼び出されます。サーバー側のメソッドがエラーをスローした場合は OnError
、そうでない場合は OnSuccess
。 OnSuccess
には、サーブレットによって実装されたメソッドで返されたものからの戻り値が引数として含まれます。