Affects Version/s: 184.108.40.206
Fix Version/s: None
GF 220.127.116.11, Windows, single server environment (not clustered)
There is a SLSB which makes use of ExecutorService to run an arbitrary number of threads.
Each thread connects to JMS and acts as message consumer.
In the SLBS:
ExecutorService executors = Executors.newCachedThreadPool();
executors.submit(daemon); // daemon is an instance of Runnable
Inside the Runnable's run method, we attempt to create a JMS transacted session:
this.connection = this.connectionFactory.createConnection();
this.session = this.connection.createSession(true, Session.SESSION_TRANSACTED);
this.messageConsumer = this.session.createConsumer(this.queue);
The problem is when the code above is executed, a non-transacted JMS session is created and acknowledgement mode is DUPS_OK_ACKNOWLEDGE.
The SLSB which actually creates the threads by calling ExecutorService uses container manager transaction, transaction attribute is set to REQUIRED but these settings do not seem to have any effect.
Thanks for your feedback.