質問

現在、 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 には、サーブレットによって実装されたメソッドで返されたものからの戻り値が引数として含まれます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top