On Aug 30, 2008, at 1:08 AM, Juergen Weber wrote: > On Fri, Aug 29, 2008 at 7:29 PM, David Jencks > wrote: >> >> On Aug 29, 2008, at 9:59 AM, Juergen Weber wrote: >> >>> >>> Hi, >>> >>> can a Geronimo message driven bean read several messages in a >>> transaction? >>> E.g. data might be split in several parts, one message for each >>> part, and >>> the messages should not be removed from the queue until the MDB has >>> received >>> all parts and has acknowledged having read all parts? >> >> not directly. No MDB can read more than one message in an >> invocation. >> >> You might possibly be able to have your mdb open a connection and >> listen for >> the rest of the mesages that go together but you'll have to do some >> extra >> configuration such as making sure all the messages are in a message >> group so >> they all go to the same mdb. This would probably only work with >> ActiveMQ >> and very well might not work at all. >> >> You might be able to do something with a stateless session bean >> called from >> a controller that opens a connection and reads all the messages in >> a group. >> I think this is more likely to work than an mdb. > > But this would violate the J2EE spec, as an EJB would need to wait for > incoming messages which would quite certainly mean listen on a socket. By this argument remote ejbs and web apps violate the jee specs as both use sockets to receive incoming messages. In all three cases the socket is handled by a server component (ejb container, web container, or jms provider) rather than application code. Furthermore, at least activeMQ offers in-vm transport that does not use sockets at all. > > > Seems like the scenario waiting for several messages is not covered by > the J2EE spec, is it? AFAIK it is not directly covered. thanks david jencks > > > Thanks, > Juergen