2012-05-04 7 views
0

ネットワーク上のJavaアプリケーションの牽引クライアントを実行すると問題が発生します。最初のクライアントは2番目のクライアントが新しいレコードを挿入するときに結果セットをリフレッシュするときに2番目のクライアントが見ることができます。最初のクライアントは、最初のクライアントがアプリケーションを閉じて再実行するときに、リフレッシュ後もそのレコードを見ることができません。通常は2番目のクライアントからの記録を表示します!!!!!どうしたの ?どのように私は私の問題をトレースするためにそれらの両方を監視することができますか?注意:COMMITの後にAutoCommitをtrueに設定すると、すべて正常に機能します。 my.cnfに余分な設定が必要ですか?クライアントは新しいレコードを見ることができません

+0

あなたが得る 'List 'は、新しい値で再割り当てされず、最初に動作する –

答えて

1

最初のクライアントは、接続とトランザクションを開いたままにしておくだけで、トランザクションをコミットすることはありません。したがって、リフレッシュ時には「古いトランザクション状態」になります。クライアントが新しい結果セットを取得したことを確認してください(単にリフレッシュするだけではありません)。あるいはもっと簡単です。AutoCommitをtrueに設定して、動作していることを確認してください。

編集:私が間違っていると思う最初の答えを取り除きました。 (私は第2のクライアントがコミットしなかった、私は幾分質問を間違えたと言った)

+0

彼らは同じアプリケーション挿入または更新のアプリケーションは、シナリオを持っています(initAutoCommitをfalseに設定し、挿入または更新し、最後にコミットします)。何が私を混乱させるのか。 – Motasem

+0

Hm、同じアプリケーションの2つのインスタンスを繰り返し実行するということですか? (関連性があるとは思っていませんが、確信が持てません。)両方のアプリケーションでそれぞれの読み取り/書き込みの間の接続を閉じて問題が解決されているかどうかを確認してください。問題)。もちろん、コードを含む多くの情報を私たちに提供することが最善の方法です。 (ちょっとだけ、自動コミットを使ってみてはどうですか?) – esej

+0

あなたのアイデアを使用しました。(選択、更新、削除、挿入後に必要なdbを閉じてから接続してください)100%働いていますが、アイデア、私はアプリケーションをランチするときに接続し、1つの接続のみを保持する(接続、閉じる、良い考えではない再接続)アプリケーションを実行し、アプリケーションを閉じるまですべての作業のためにそれを保持するときに接続を行う。自動コミットは病院のERPとネットワークACIDで作業することが優先事項であるため、私のアプリケーションにとっては悪い考えです。 – Motasem

関連する問題