01234567890123456789012345678901234567890123456789012345678901234567890123456789
1. Introduction
1.1. Project/Component Working Name:
Sun Java System Message Queue integration

1.2. Name(s) and e-mail address of Document Author(s)/Supplier:
Sivakumar Thyagarajan [sivakumart@dev.java.net, sivakumart@Sun.COM]
with inputs from Binod PG, Ramesh Parthasarathy.

1.3. Date of This Document:
v0.8 - Aug/11/06
v0.9 - Aug/28/06 (Clarified DIRECT mode and 4.1.iii)
v1.0 - Nov/08/06 (Clarified updates from asarch and added section
on ConfigurableTransactionSupport SPI)

2. Project Summary
2.1. Project Description:
To outline the new features in the application server to enable
tighter integration of Sun Java System Message Queue 4.1,
especially in the areas of improving MDB/JMS performance and
HA AS/MQ clusters.

2.2. Risks and Assumptions:
The integration depends on timely deliverables of binaries from
the MQ team.

3. Problem Summary
3.1. Problem Area:
Enteprises increasingly require a performant and highly available
JMS/MDB path for their loosely coupled JMS/Java EE applications.
To address these requirements the key goals of the next generation
Sun Java System Message Queue, based on Project Open Message Queue
https://mq.java.net are around providing enhanced performance
by closely integrating with the application server's runtime [when
housed within the appserver] and providing a new Highly Available
cluster type. This project aims to integrate this version of the
Message Queue project with the application server.

3.2. Justification:
Enhanced performance in the MDB/JMS path, out-of-the-box easy
configuration of AS/MQ clusters.

4. Technical Description:
4.1. Details:
i. "DIRECT" AS/MQ integration mode
One of the optimizations planned is to bypass the networking stack
for JMS operations when the application server and the
JMS broker is co-located in the same VM. This would enable all JMS
operations within a co-located setup to not incur the overhead of
inter-socket communication and would result in a much more performant
system for low-end deployments. To support this form of integration,
the current EMBEDDED mode would be modified to act as the new DIRECT
mode. (A system property to revert to non-DIRECT mode would also be
provided for backward compatability reasons)

PE and EE DAS would continue to have EMBEDDED as the default. Clustered
and standalone server instances by default would be LOCAL. EMBEDDED
would be available as an option for clustered and standalone server
instances but would not be tested as a primary configuration.

ii. HA cluster support in AS EE
The "Highly Available" cluster type to be available in SJSMQ 4.1 would
provide a peer-to-peer broker cluster topology with a shared persistent
data store offering "Data Availability". The "HA-Cluster" mode also does
away with the master broker topology supported in SJSMQ 3.6. In this
release we would allow "auto-clustering" feature as explained in
"4.1.1.4 SJSMQ high availability cluster support in SJSAS9.0" of the AS
9.0 "Connectors and JMS" functional specification when the administrator
chooses to have a HA AS/MQ cluster. A table showing all possible
AS/MQ integration options, and their pros/cons is available at
http://www.glassfishwiki.org/gfwiki/Wiki.jsp?page=AppserverMqIntegrationOptions

iii. "Auto-clustering" for non-HA AS/MQ clusters
In SJSAS 8.x, non-HA MQ clusters [traditional master broker styled MQ
clusters] had to be setup separately from the AS cluster by the
administrator. Since the common use-case is to have a MQ cluster
associated with an AS cluster, this release would automatically create a
LOCAL (co-located) non-HA cluster while a user creates an AS cluster
by default.

Therefore when an adminstrator creates an AS cluster with 3 AS
instances, each AS instance would be configured to work with a LOCAL
broker, and the result 3 MQ broker instances would be made to form a
MQ cluster transparently. The first AS instance's MQ broker would be
set to be the master broker. The user has to use MQ's tools to migrate the
master broker should they choose to delete the first cluster instance
(instance that hosts the master broker). See discussion at
http://www.glassfishwiki.org/gfwiki/Wiki.jsp?page=NonHA_ASMQ_Clustering
for more information.

iv. ConfigurableTransactionSupport SPI
To support MQ RA and other resource adapters to understand the current
transactional context in which a ManagedConnectionFactory is used, a new
appserver SPI interface
com.sun.appserv.connectors.spi.ConfigurableTransactionSupport would be
provided. Please see
http://www.glassfishwiki.org/gfwiki/Wiki.jsp?page=ManagedConnectionFactoryContext
for more details.

4.2. Bug/RFE Number(s):
None

4.3. In Scope:

4.4. Out of Scope:

4.5. Interfaces:

4.5.1 Exported Interfaces

4.5.2 Imported interfaces
This integration depends on the interfaces exposed by the Sun Java
System Message Queue Resource Adapter for broker lifecycle control,
MQ "HA-cluster" integration.

4.5.3 Other interfaces (Optional)

4.6. Doc Impact:
Application Server's Developer's Guide and Administration Guide.

4.7. Admin/Config Impact:
Changes to the admin GUI to indicate

  • new integration mode
  • HA related changes

4.8. HA Impact:
Enhanced HA. See also the last note on 4.1.iii

4.9. I18N/L10N Impact:
None

4.10. Packaging & Delivery:
None

4.11. Security Impact:
None

4.12. Compatibility Impact
None

4.13. Dependencies:
Dependent on Sun Java System Message Queue 4.1

5. Reference Documents:
Sun Java System Application Server 9.0 "Connectors and JMS" Functional
Specification

6. Schedule:
6.1. Projected Availability:
Aligns with GlassFish V2/Sun Java System Application Server
9.1 schedule