2

私は GWT-RPC を使用してクライアント データを取得しています。私の要件は、ペイロードを解析して内部のデータを取得することです。メトリック/監視の目的で、このデータをログに記録または保持する必要があります。

HTTP リクエストをインターセプトするためにサーブレット フィルターを使用しています。リクエストが次のようになっていることがわかります-

5|0|7|http://localhost:8080/testproject|   
29F4EA1240F157649C12466F01F46F60|com.test.client.GreetingService|
greetServer|java.lang.String|myInput1|myInput2|1|2|3|4|2|5|5|6|7|

このデータを解析する標準的なメカニズムはありますか? 残念ながら、これを解析するために独自のコードを作成することは良い解決策ではありません。カスタム オブジェクトを RPC との間でやり取りするときに、このリクエスト ペイロードが複雑になり、GWT-RPC の内部解析メカニズムが将来変更される可能性があるためです。コード。私はこれに出くわしましたが、それが堅牢で維持されているかどうかはわかりません。

代替手段はありますか?任意のポインタをいただければ幸いです。

4

2 に答える 2

4

RPCGWTのクラスを使用します。シリアライゼーション ポリシー
指定する必要があります。厳密な名前はリクエスト ヘッダーで渡されます。

応答のデコードはより困難です。com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.ResponseReadera と一緒に使用できcom.google.gwt.user.client.rpc.impl.ClientSerializationStreamReaderますが、クラスパスにJsParserfromが必要です。また、サーブレット API (とりわけ) が含まれているため、Web アプリケーションに含めることはgwt-dev.jarできません。gwt-dev.jarそのため、関連するクラスを から抽出しgwt-dev.jarて、Web アプリで使用する必要があります。

どちらの場合も、リクエストを「実際に」処理するためにデシリアライズされるオブジェクト、またはリクエスト処理の結果としてシリアライズされるオブジェクトと同じオブジェクトを再構築することに注意してください。
全体として、s のメソッドで AOP を使用すると、運が良くなり、パフォーマンスが向上する可能性がありますRemoteServiceServlet

于 2012-09-04T10:11:40.173 に答える
1

それがあなたが探しているものかどうかはわかりませんが、解析されたパラメーターをログに記録する標準的な方法は、AbstractRemoteServiceServlet をオーバーライドすることonAfterRequestDeserialized(RPCRequest rpcRequest)です。RPCRequest には、サービス メソッドとそのすべてのパラメーター値、解析された RpcToken などが含まれます。すてきな Java オブジェクトの形式。

于 2012-09-04T11:42:47.653 に答える