1

問題:以下の問題は、2つの異なるケースで発生します。

ケース1:クライアントがremoteObject要求を行うと、つまり情報を保存する場合...JavaSAVE_INFOメソッドが呼び出されます。リクエストが失敗した場合、つまりFaultHandlerに戻った場合(情報をarrayCollectionに保存します)。後で、arrayCollectionの各アイテムに対してSAVE_INFOを再度呼び出します(arrayCollectionに10個のアイテムがある場合。同じメソッドを10回呼び出します。これは一種の愚かなことですが、オーバーロードメソッドを作成するためにJavaを制御することはできません)。DBに同じ情報のレコードが複数あることがあります。arraycollectionをループして呼び出しを行うときにこれが発生するのか、通常の1回限りの呼び出し中に発生するのかはわかりません。再現するパターンが見つかりませんでした。Java LOGレベルは、実稼働環境ではエラー・レベルです。すべての呼び出しを監視するために本番環境でINFOに設定することはできません。この複数回保存されたレコードが、arrayCollection内のレコードなのか、通常のレコードなのかはわかりません。

Flex3 RemoteObject-> WAS 6.1、lCDS 3.0、Java1.5->Webサービス->Java(休止状態)-> Oracle 10g

ケース2:アプリケーションを開いたままにして、ユーザーがその日に出発し、翌朝情報を送信すると、その情報のDBに重複したレコードが表示されます。(ここにはarrayCollectionはありません。単純なストレートワンコール)

Flex3 RemoteObject-> OC4J Blazeds Java1.5(JDBC)->Oracle10g。

最近、テスターのテストケース2アプリケーションの1つがこのパターンを見つけました。これは、ケース1にも当てはまる可能性があると思い始めています。ユーザーが昼食/休憩に出かけ、戻ってきた後にarrayCollectionを再送信した可能性があります。昼食時に、Javaがクライアントのセッションを強制終了し、同時に10を再送信した後、Javaが10の重複セッションを作成した可能性があります...繰り返しますが、私が想定していることは完全に間違っている可能性があります。

flex remoteObject amfバッチ呼び出しがエラーを引き起こしているのか、Javaセッションの重複がエラーを引き起こしているのか、またはoracleがそれを行っているのかはわかりません。問題がどこにあるのか、私には手がかりも考えもありません。

助けてください ???

4

1 に答える 1

0

接続が切れていると仮定するのは正しいと思いますが、コレクションが重複していることが原因である場合とそうでない場合があります。簡単なテストは、重複を許可しないように arrayCollection コードを書き直して、修正されるかどうかを確認することです。

奇妙なことに、これは、サービスに対して複数の接続が行われている、同じクライアントからの複数のセッションで問題になる場合があります。これは通常、リモート ホストがセッション Cookie を無効にしていることが原因です。Blaze でクライアント接続を正しく管理するには、セッション Cookie を有効にする必要があります。

この場合、クライアントによって作成される同時接続の数を制限するコードを記述する必要があります。これは、たとえば JSP ページで行うことができます。これをテストするには、接続数を含むテーブルに追加のフィールドを格納するコードを記述できます。そうすれば、重複データが同じセッションから来ているかどうかを確認できます。

お役に立てれば。

于 2012-02-12T05:58:35.060 に答える