0

JMSで非常に奇妙な問題が発生しています。

A-WindowsB-Linuxの2台のマシンがあります。 マシン Aは JMS を初期化します (1 つのプロデューサーと 1 つのコンシューマーを作成します)。( Java コード)

マシン Bがマシン Aにメッセージを送信します。マシンAが受け取ります!メッセージを送信し、マシン Bに応答を返します。( C++ コード)

私の問題はこれです:マシンAコードを実行すると、すべて正常に動作します! . しかし、別の Windows マシン (マシン Cと呼びましょう) で同じバイナリを実行すると、マシン Bからのメッセージは受け入れられますが、マシン Cは応答を送信しません。

ネットワークをスニッフィングしたところ、マシン A の場合、 TCP-ACKに続いてTCP PSH- ACK が送信されることがわかりました(正しい応答で)。しかし、マシン CTCP-PSH-ACKなしで* TCP-ACKのみを送信します。

編集: JConsole を使用して、マシン Cの out トピック属性: DequeueCount、DispatchCount、Enqueue Count がすべてゼロであることに気付きました。プロデューサーが何も送信/エンキューしていないようです (例外はスローされません)。

どんな助けでも大歓迎です!

4

1 に答える 1

1

解決策はとても明白なようで、それに気付かないのは少し恥ずかしいです。とにかく、マシン Aで実行されたコードは非トランザクションセッションを使用し、マシン CのコードはCOMMITING !!!!なしでトランザクションセッションを使用したようです。

だから私はセッションのトランザクションフラグをオフにしました(とにかく私のニーズに合っているので)、それは魅力のように機能します!

svnにコミットせずにコードを変更した男について....後で彼と話します:)

于 2012-07-03T16:06:15.847 に答える