user manual

254 BES Developers Guide
Runtime pluggability
queue or topic must be a transactional resource. BES requires that JMS
products implement the JTA XAResource interface and support JMS XA APIs.
In addition, the JMS product should support the javax.jms.ConnectionConsumer
interface. The latter is vital since a central idea of MDBs is the concurrent
consumption of messages. The ConnectionConsumer interface achieves this.
The mechanism also works in conjunction with some optimal methods of the
javax.jms.Session objects, namely Session.run() and
Session.setMessageListener().
Configuring JMS admin objects (connection factories,
queues and topics)
If the JMS providers' admin objects, like connection factories and destinations
follow the JavaBeans specification (as encouraged in the JMS specification),
the BES DDEditor tool can define, edit and deploy these objects into the BES
JNDI tree without needing a JMS product-specific mechanism.
For specific information on using other JMS service providers with BES and
requirements for admin objects (queues, topics, and connection factories), go
to Configuring admin objects for other JMS providers on page 256.
Service management
The BES service control infrastructure can manage the JMS service process
(either a JVM or native process, whatever form it takes in the JMS provider) as
a first class managed object. Operations like starting, stopping and server
configuration is provided for supported (Tibco and Sonic) providers out of the
box. Extending this to any JMS product is documented in Service
management for supported and other JMS providers on page 258.
The BES Management Console allows for template-based additions of any
number of JMS servers, of any vendor type, to the same BES configuration in
a management domain.
The above list implicitly defines levels of pluggability. You will achieve the best
scenario if all three are met, but just the runtime pluggability as well as vendor-
specific ways to achieve the other levels may be sufficient in many situations.
Runtime pluggability
To achieve the level of "runtime pluggability", you need to comply with the
J2EE specifications. A CTS compliant JMS product that additionally
implements the JMS specification optional APIs can easily plug into the BES
runtime. To support transactional messaging for MDBs and J2EE container
intercepted messaging (connection and session pooling), meaning the queue
or topic must be a transactional resource, BES requires that the JMS XA APIs
support JTA integration. In addition, the JMS product should support the