0
votes

I am having a very strange problem with JMS.

I have two machines A-Windows, B-Linux. Machine A initializes JMS (creates one producer and one consumer). (Java code)

Machine B sends a message to machine A. Machine A receives! the message and sends a response back to machine B. (C++ code)

My problem is this : when I run the machine A code all is working fine!. BUT when I run the same binary on another windows machine (Lets call it machine C) the message from machine B is accepted but machine C does NOT send the answer.

I sniffed the network and found that in case of machine A it sends TCP-ACK followed by TCP PSH-ACK (with the correct response). BUT machine C only sends the TCP-ACK *without* the TCP-PSH-ACK.

EDIT : Using JConsole I noticed that machine C's out topic attribues : DequeueCount, DispatchCount, Enqueue Count are all zeroes. Seems like the producer is not sending/en-queuing anything (no exception is thrown).

Any help is appreciated !

1

1 Answers

1
votes

It seems that the solution is so obvious and I am a bit embarrassed for not noticing it. Anyway it seems that the code that ran on Machine A used a non-transaction session while the code on machine C used a transaction session without COMMITING!!!!.

So I turned the session's transaction flag off (as it fits my needs anyway) and it works like a charm !

About the dude who made changes in code without committing to the svn .... I'll talk with him later :)