Java オブジェクトの AMF (BlazeDS) シリアル化を Actionscript にデバッグするにはどうすればよいですか?
-
13-09-2019 - |
質問
BlazeDS を使用して、Flex アプリケーションで使用しているいくつかの Java オブジェクトをリモートにしています。クラスの 1 つで型強制エラーが発生しましたが、これは一生わかりません。同じデータ型を使用して正常に動作する他のクラスもあり、マッピングを何十回も見直しました。私の知る限り、ゲッターとセッターに必要な規則はすべてに従っています...
とにかく、私の質問は次のとおりです。この問題をデバッグするにはどうすればよいですか? Flex アプリをデバッグ モードで実行すると、あまり役に立たないいくつかの一般的なエラーがコンソールに吐き出されます (TypeError:エラー #1034:型強制が失敗しました:Object@5d1d809 を valueObjects.SomeClass に変換できません。)
私は AMF / Flex + Java についてはまったくの初心者なので、ヒントがあれば大変助かります。
解決
これらは、BlazeDS、AMF などを使用するときに使用する 2 つのツールです。
- HTTPプロキシツールを使用する これは、クライアントとサーバー間の呼び出しを示しています。 チャールズ
チャールズは、開発者がマシンとインターネット間のすべてのHTTPおよびSSL / HTTPSトラフィックを表示できるようにするHTTPプロキシ / HTTPモニター /リバースプロキシです。これには、リクエスト、応答、HTTPヘッダー(Cookieとキャッシュ情報が含まれています)が含まれます。
BlazeDS のログをオンにする. 。内で
WEB-INF/conf/services-conf.xml
, 、デバッグ レベルを ' に下げます。debug
' 以下の抜粋のように。かなり詳細な出力が次のように表示されます。{tomcat-home}/logs/localhost.yyyy-mm-dd.log
<
target class="flex.messaging.log.ConsoleTarget" level="debug"
>
他のヒント
サービス クライアント AMF メッセージ間の通信を確認する最も簡単な方法は、FireFox を使用し、インストールすることです。 ファイアバグ 拡張子を追加して、 AMFエクスプローラー. 。構造化されたリクエストとレスポンスを確認できます。
クライアント側で逆シリアル化される Java クラスには、アプリケーション (mxml または as3) 内の対応する AS3 クラスのオブジェクトへの参照が必要です。そうしないと、as3 クラスが swf ファイルにロードされず、Java クラスが汎用の as3 オブジェクトに逆シリアル化されます。
更新しましたこれは、マッピング、ゲッター、セッターがあるにもかかわらず発生します。mxml の script セクションで、対応する AS3 クラスのオブジェクトを宣言するだけです。
私は Flex Builder を使用しており、クライアント側とサーバー側の両方のデバッグ用にセットアップしています。最初はセットアップするのが大変でしたが、Google でステップバイステップのチュートリアルを参照できます。RPC のデバッグには非常に価値があると思います。最後に確認したところ、Flex Builder には無料トライアルがあり、学生と失業者は無料で利用できます。
また、Java でのインストルメンテーションによって情報の損失が発生したり、シリアル化プロセスやストリームに干渉したりする可能性があることにも注意してください。
私はこれを経験しました TypeError: Error #1034: Type Coercion failed
データ アクセス層が iBatis で実装され、遅延読み込みがオンになっているプロジェクト (Flex<->BlazeDS+Spring) では、(少なくとも理論的には) 効率の損失が少なくなるという理由から、遅延読み込みをオフにしました。私たちが実施していた他の回避策と比較して。