here's the thing. we have a mdb which acts like a pass through to a stateless session bean. (command pattern?). anyway. the mdb requires a transaction, as does all the slsb's involved. the slsb basically posts orders to a database. during load testing, the whole thing goes flaky. a client application submits 1000 orders to be processed (simulates 10 users, 2 orders per minute per user, 100 orders total per users.). the thing is, 1000 orders never make it to the database, but _most_ times the jms queue has processed all it's messages. we're using guaranteed delivery on the client side, and looking at the wls console can see that there were 1000 messages in the queue.
the mdb's have a pool of 20 beans, and there is 25 default db connections. we know the db connections need to be bumped, but that doesn't explain how 1000 messages can get processed, but not make it to the db. we notice various messages about the mdb not being able to call context.setSessionRollback() even though it has required as a transaction marker (and so do the ejb's). i notice also in the logs that there's errors gettings sql connections. that's expected with so few connections. but, if there's an error getting a connection, i would think the mdb could roll back the entire transaciton and send the message back to the queue for later processing.
we're using oracle's thin xa driver with wls 8.1sp2.
if anyone could perhaps shed a bit of light on this, it would be most certainly appreciated!!