01234567890123456789012345678901234567890123456789012345678901234567890123456789 1. Introduction 1.1. Project/Component Working Name: Generic JMS Resource Adapter Integration 1.2. Name(s) and e-mail address of Document Author(s)/Supplier: Ramesh Parthasarathy [rampsarathy@dev.java.net, rameshp@sun.com] 1.3. Date of This Document: August 17 2006 2. Project Summary 2.1. Project Description: To promote glassfish integration with other JMS providers, generic jms resource adapter version 1.7 (https://genericjmsra.dev.java.net) will be integrated with the application server . Through this integration developers will be able to take advantage of some feature enhancements like reliable redelivery, load balancing for topic destinations in a cluster and monitoring. 2.2. Risks and Assumptions: 3. Problem Summary 3.1. Problem Area: The current version of generic jms ra (1.5) that is bundled with glassfish does not support the following a. Transaction recovery when redelivery is enabled. b. Load balancing of messages from topic destinations to Message driven bean endpoints in an application server cluster. c. Monitoring the resource pool parameters. 3.2. Justification: The above features are required in an enterprise system. 4. Technical Description: 4.1. Details: 4.1.1 Reliable message redelivery : Redelivery is a feature in Generic JMS RA that can be used to resend the message to an MDB ( or any listener implementation) if there was an exception during the first send attempt. If the first invocation of the MDB's listener method throws an exception then the RA tries to redeliver it N ( number of redelivery attempts configured using the activation config property RedeliveryAttempts in inbound endpoint) times at an interval ( configured using activation property RedeliveryInterval). If redelivery is unsuccessful even after the attempts are exhausted the RA tries to send the message to a Dead Message Destination ( a JMS destination configured in the activation config). In 1.5 that is bundled currently, redelivery was un-reliable because redelivered messages could not be recovered during transaction recovery. 4.1.2 Load balancing topic destinations : A message driven bean that is deployed on an application server cluster is deployed on all instances of the cluster. If the bean is listening to a JMS topic destination for messages then there are N ( N is the number of instances in the cluster) separate subscribers for the same topic. This causes the same message being received and processed by all N instances in the cluster. This results in duplicay and also in-efficiency, which are some of the undesirable characteristics of reliable and highly available enterprise systems. In 1.7, a message would be received and processed by one and only one instance of the application in a cluster. 4.1.3 Monitoring : It would be useful to add JMX monitoring to Generic JMS RA. Attributes related to the pool usage and configuration information will be exposed through JMX MBeans. 4.2. Bug/RFE Number(s): https://genericjmsra.dev.java.net/issues/show_bug.cgi?id=24 https://genericjmsra.dev.java.net/issues/show_bug.cgi?id=27 https://genericjmsra.dev.java.net/issues/show_bug.cgi?id=26 4.3. In Scope: 4.4. Out of Scope: 4.5. Interfaces: 4.5.1 Exported Interfaces JMX interface : TBD 4.5.2 Imported interfaces None 4.5.3 Other interfaces (Optional) None 4.6. Doc Impact: None 4.7. Admin/Config Impact: None 4.8. HA Impact: None 4.9. I18N/L10N Impact: None 4.10. Packaging & Delivery: None 4.11. Security Impact: None 4.12. Compatibility Impact None 4.13. Dependencies: Testing: SQE has to test the RA with SunMQ and WebSphere MQ. Testing involves creation of new test cases for features added as well as executing the current set of tests. 5. Reference Documents: https://genericjmsra.dev.java.net/docs/redelivery/redelivery.html 6. Schedule: 6.1. Projected Availability: Aligns with GlassFish V2/Sun Java System Application Server 9.1 schedule