ejb@glassfish.java.net

Non-JMS MDBs

From: Chase <chase_at_osdev.org>
Date: Thu, 5 Nov 2009 16:47:17 -0600

Hello,

I'm creating a JCA inbound resource adapter and I'm trying to figure
out the correct way to handle the behaviour of the endpoints and I
need a little bit of direction.

Does GlassFish throw an UnavailableException when there are no more
MDBs in the pool or does it block? I found discussion about the
behaviour in SunOne but that isn't exactly current
(http://weblogs.java.net/blog/schaefa/archive/2004/09/jca_15_choices.html)

If there is blocking behaviour is the call to createEndpoint the thing
that blocks or is the endpoint proxy created and the
MessageListener-type method calls are what blocks?

Are the endpoint proxies going to have a one-to-one or one-to-any
relationship with the MDB before calling release? In other words can
non-JMS MDBs have state when using a custom resource adapter?

How do most in-bound resource adapters handle the
UnavailableException? Just drop messages? I found some websphere docs
that seem to indicate that UnavailableException is a method of message
process throttling but throttling implies that the messages shouldn't
be dropped. Trying to ensure FIFO message processing is going to get
ugly and also greatly increase the amount of Work instances....

-Matt H.