GlassFish Server Open Source Edition 3.1 - JMS and Message Queue enhancements

Scope of the Project

Feature-ID Desired Improvement Priority Source of requirement Comments One-pager author or link Status
JMS-01 JMS support for embedded GF with an Embedded MQ broker (Broker Embedded + GlassFish Embedded) P3 Product management   Satish (One-pager for GF changes ) No MQ changes expected Completed
JMS-02 JMS support for embedded GF with a Local MQ broker (GlassFish Embedded + Broker Local) P4 Product management   Satish (One-pager for GF changes TODO) No MQ changes expected Not scheduled (insufficient time)
JMS-03 JMS support for embedded GF with a Remote MQ broker (GlassFish Embedded + Broker Remote) P3 Product management   Satish (One-pager for GF changes ) No MQ changes expected Should technically work but hasn't been tested
JMS-04 Running embedded MQ broker in embedded GF without starting any ports (GlassFish Embedded + Broker Embedded) P4 Engineering   Nigel (One-pager for MQ changes ) Satish (One-pager for GF changes TODO) Not scheduled (too low priority)
JMS-05 Running embedded MQ broker in embedded GF with minimum number of ports (GlassFish Embedded + Broker Embedded) P3 Engineering   Nigel (One-pager for MQ changes see JMS-4) Satish (One-pager for GF changes TODO) Not scheduled (insufficient time)
JMS-06 Support for conventional clustering of MQ brokers in Local mode P1 Feature parity with GF 2.1   Satish (One-pager for GF changes ) No MQ changes expected Completed
JMS-07 Support for enhanced clustering of MQ brokers in Local mode P1 Feature parity with GF 2.1   Satish (One-pager for GF changes ) No MQ changes expected Completed
JMS-08 Support for conventional clustering of MQ brokers in Remote mode P1 Feature parity with GF 2.1   Satish (One-pager for GF changes ) No MQ changes expected Completed
JMS-09 Support for enhanced clustering of MQ brokers in Remote mode P1 Feature parity with GF 2.1   Satish (One-pager for GF changes ) No MQ changes expected Completed
JMS-10 Support for conventional clustering of MQ brokers in Embedded mode (Broker Embedded) P1 or P2 Product management   Nigel/Amy (One-pager for MQ changes ) Satish (One-pager for GF changes ) Completed
JMS-11 Support for enhanced clustering of MQ brokers in Embedded mode (Broker Embedded) P4 Product management Not feasible without extensive changes   Not scheduled (technical reasons)
JMS-12-a Improve MQ conventional clustering with master broker P2 Product management/users   Amy (One-pager for MQ changes ) Satish (One-pager for GF changes ) Completed
JMS-12-b MQ conventional clustering without master broker in GlassFish EMBEDED/LOCAL Mode (Broker Embedded or Broker Local) P2 Product management/users   Amy (One-pager for MQ changes ) Satish (One-pager for GF changes ) Completed
JMS-13 Integration with IBM Websphere MQ through GenericJMSRA P1 Feature parity with GF 2.1     Completed
JMS-13-a Integration with WebLogic MQ through GenericJMSRA P1 Product management     Completed
JMS-14 Direct mode support for additional RAs P4 Engineering Essentially solving a class loader issue in GF Satish (One-pager for GF changes TODO) Not scheduled (too low priority)
JMS-15 Separation of Life-cycle management components from JMSRA P4 Engineering   Satish (One-pager for GF changes TODO) Nigel (One-pager for MQ changes ) Not scheduled (too low priority)
JMS-16 Enhancements to JMS related Admin commands for cluster support P1 Feature parity with GF 2.1   Satish (One-pager for GF changes ) No MQ changes expected Completed
JMS-17 Integrating existing JMX based MQ broker metrics with GF monitoring framework P3 Product management   Satish (One-pager for GF changes ) No MQ changes expected Deferred
JMS-18 Integrating existing command-line MQ broker metrics with GF 3 P4 Engineering   Nigel (One-pager for MQ changes WILLNOTDO) Satish (One-pager for GF changes WILLNOTDO) Not scheduled (too low priority) Will not do one-pagers either.
JMS-19 Adding new MQ client-side metrics P4 Engineering   Nigel (One-pager for MQ changes WILLNOTDO) Satish (One-pager for GF changes WILLNOTDO) Not scheduled (too low priority) Will not do one-pagers either.
JMS-20 WebLogic DD support (No) Product management Not feasible without extensive changes Defer Not scheduled (Technical reasons)
JMS-21 Coherence support (No) Product management Not appropriate   Not scheduled (Technical reasons)
JMS-22 VisualVM Plugin Enhancements P4 Engineering management   Nigel (One-pager ) Now on hold Not scheduled
JMS-23 Glassfish RFE 6893609 (Glassfish MQ LOCAL startup options should be configurable) P4 Users (JMS-12 will reduce need)   Nigel (One-pager for MQ changes WILLNOTDO) Satish (One-pager for GF changes WILLNOTDO) Not scheduled (Too low priority) Will not do one-pagers either.
JMS-24 Glassfish issue 11721 (GF does not allow all required passwords to be passed to managed MQ broker) P2 Users   Nigel (One-pager for MQ changes ) Satish (One-pager for GF changes TODO)  
JMS-25 Dynamic Sync Broker List of MQ Conventional Cluster with GlassFish Cluster P3     Amy/Nigel (One-pager for MQ changes ) Satish (One-pager for GF changes  ) Completed

(Note: Broker Embedded = MQ configured to run in same VM as GlassFish, Remote = MQ running on same machine, w/Lifecycle controls, Remote = MQ unmanaged, in remote VM See also GlassFish Embedded Sub-project page; See also EJB-5 from the EJB 3.1 Sub-project page.)

Feature Overview

JMS support for embedded Glassfish instances

  • Description

This task involves providing complete JMS support to Glassfish when it is running in an embedded mode. All three modes of MQ integration- embedded/local and remote will be supported. However, MQ clusters will not be supported since cluster service requires some minimum broker properties or commandline parameters and requires portmapper service running.

  • Sub-tasks

GlassFish Meessage Queue 4.5 will be integrated into GlassFish Server, Open Source Edition 3.1. Please also see the GlassFish MQ project for more information.

Support for different modes of MQ integration within embedded GF:
The following subtasks are the first level of support for integrating JMS capabilities with embedded GF.
JMS-1: Support for running a stand-alone embedded MQ broker within embedded GlassFish
JMS-2: Support for running a stand-alone Local MQ broker within embedded GlassFish
JMS-3: Support for running a stand-alone Remote MQ broker within embedded GlassFish

Starting MQ with no/minimum ports:
MQ currently requires a minimum of four ports to be started- Port mapper, JMS service, Cluster Service and JMS admin. The following two requirements are advanced enhancements to the JMS-1 requirement:

JMS-4: Running embedded MQ broker without starting any ports: In cases where the only JMS communication required is within the same JVM, no ports need to be started unnecessarily. Applications would communicate with MQ using the new APIDirect mode.

JMS-5: Running embedded MQ broker with minimum number of ports: This would translate into MQ starting only the JMS service and port mapper ports.

  • Owners

Satish, Nigel/Amy

  • Estimate

TBD

JMS clustering and HA support

  • Description:

This task involves enhancements to GlassFish 3.1 to support MQ's clustering capabilities. MQ currently supports two modes of clustering – conventional clustering (service HA) and enhanced clustering (includes data HA, which relies on a HA database).

  • Subtasks:

JMS-6: Support for conventional clustering of MQ brokers in Local mode.
JMS-7: Support for enhanced clustering of MQ brokers in Local mode
JMS-8: Support for conventional clustering of MQ brokers in Remote mode
JMS-9: Support for enhanced clustering of MQ brokers in Remote mode

This is the level of support that has been available in earlier releases of GlassFish.

  • Related features:

Clustering of MQ brokers in embedded mode:
This has not been supported in earlier releases of GlassFish. To support enhanced cluster in embeded mode, there is an issue with having to restart the MQ broker in the event of a potential split-brain (e.g. under network partition if a broker unable to update its heartbeat within the configured monitor interval). When a potential split-brain is detected, it is very important to terminate any in-flight data access right away hence the broker JVM will need to be halted and restarted. Restarting an embedded broker without exiting the JVM would increase seriously the risk to data integrity. The following two requirements are an extension of this feature:
JMS-10: Support for conventional clustering of MQ brokers in Embedded mode
JMS-11: Support for enhanced clustering of MQ brokers in Embedded mode

JMS-12 Improvements to MQ's conventional clustering (master broker):
MQ conventional clustering architecture requires a master broker on creation/update/deletion of durable subscription and physical destination and sync-up with master broker on a broker startup. This imposes the requirement for the master broker to be started before the remaining broker instances can start and function correctly. They have been several complaints from users running into "master broker not started" errors if there are delays in the start-up of the master broker.

  • Owners:

Satish, Nigel and Amy Kang

  • Schedule:

TBD

Support for Resource Adapters

  • Description:

GlassFish currently ships with JMSRA as the default resource adapter. JMSRA is a system RA hence in is available out-of-the-box. Currently, JMSRA also manages the broker life-cycle (starting and stopping the broker) in embedded and local modes.

  • Subtasks:

JMS-13: Integration with IBM Websphere MQ through GenericJMSRA:
GlassFish also ships GenericJMSRA for integration with other JMS provides. We currently support integration with IBM Websphere MQ.

  • Related tasks:

JMS-14: Direct mode support for RAs:
This will allow other RA's to use the 'Direct mode' rather than TCP to connect to an in-process MQ broker. Currently, this feature is only available to JMSRA. Performance test suggests this can approximately double messaging performance compared with TCP mode.

JMS-15: Separation of Life-cycle management components from JMSRA:
At present, JMSRA functions as both a MQ broker lifecycle management component and as a JCA based resource adapter. This means that even if JMSRA is not required as a RA, it must nevertheless be started in order to perform broker lifecycle management. This work would involve spliting JMSRA into separate RA and lifecycle management components. Post this change, there would not be a need to start JMSRA unless it was actually needed.

  • Owners:

Nigel, Satish

  • Schedule:

TBD

Enhancements to JMS related Admin commands for cluster support

  • Description:

JMS-16: Enhance the existing JMS related admin commands (such as - create-jms-host, delete-jms-host, list-jms-hosts, create-jms-resource, delete-jms-resource, list-jms-resources, create-jmsdest, delete-jmsdest, list-jmsdest, flush-jmsdest, jms-ping, etc.) for cluster support.

  • Subtasks:

None

  • Owners:

Satish

  • Schedule:

TBD

Integration of MQ's monitoring capabilities with the GlassFish 3 monitoring framework

  • Description:

The task involves leveraging and enhancing MQ's monitoring capabilities so that they can be accessible using the new Glassfish 3 monitoring framework.

  • Subtasks:

JMS-17: Integrating of existing JMX based MQ broker metrics with GF monitoring framework: There are currently exposed through JMX
JMS-18: Integrating of existing command-line based MQ metrics with GF 3: Currently these can only be accessed through the MQ command line
JMS-19: Adding MQ client-side metrics: There are currently no metics available on the MQ client-side.

  • Owners:

Satish, Nigel

  • Schedule:

TBD

WebLogic DD support

  • Description:

JMS-20: Support for weblogic-jms.xml in GlassFish. A detailed feasability study is available here

  • Subtasks:

None

  • Owners:

TBD

  • Schedule:

TBD

Coherence support

  • Description:

JMS-21: Enhancement to MQ to use Coherence for high availability in lieu of MySQL.

  • Subtasks:

None

  • Owners:

TBD

  • Schedule:

TBD

VisualVM Plugin Enhancements

  • Description:

MQ 4.4U1 currently offers a plugin to VisualVM to allow the state of a running MQ broker to be easily viewed. Description here. Quick start guide here.
It is proposed to enhance this to support broker clusters, allow charting of runtime data and provide various other improvements. Proposals here.

  • Tasks:

JMS-22: VisualVM Plugin Enhancements

Other enhancements

  • Tasks:

JMS-23: Glassfish RFE 6893609 (Glassfish MQ LOCAL startup options should be configurable)

JMS-24: Glassfish issue 11721 (GF does not allow all required passwords to be passed to managed MQ broker))

One-pager / Functional Specification

  • These will be linked from the table above

Milestone Schedule

Item # Date/Milestone Feature-ID Description QA/Docs Handover? Status / Comments
01 M1 N/A All specs completed No Completed
02 M2 JMS-06 Support for conventional clustering of MQ brokers in LOCAL broker mode No Completed
03 M2 JMS-07 Support for enhanced clustering of MQ brokers in LOCAL broker mode No Completed
04 M2 JMS-08 Support for conventional clustering of MQ brokers in REMOTE broker mode No Completed
05 M2 JMS-09 Support for enhanced clustering of MQ brokers in REMOTE broker mode No Completed
06 M3 JMS-13 Integration with IBM Websphere MQ through GenericJMSRA Yes Completed
07 M3 JMS-16 Enhancements to JMS related admin commands for cluster support Yes Completed
08 M4 JMS-10 Support for conventional clustering of MQ brokers in EMBEDDED broker mode Yes Completed
09 M4 JMS-12a Improve MQ conventional clustering with master broker Yes Completed
10 M5 JMS-12b MQ conventional clustering without master broker in EMBEDDED or LOCAL broker mode Yes Completed
11 M5 JMS-01 JMS support for embedded Glassfish with an EMBEDDED broker Yes Completed
12 M5 JMS-03 JMS support for embedded Glassfish with a REMOTE broker Yes Not tested but should technically work
13 M5 JMS-17 Integrating existing JMX-based MQ broker metrics with Glassfish monitoring framework Yes  
14 M5 JMS-24 Glassfish issue 11721 (GF does not allow all required passwords to be passed to managed MQ broker) Yes  
15 On hold JMS-22 VisualVM Plugin Enhancements MQ issue 55 Yes  
16 M5 JMS-25 Dynamic Sync Broker List of MQ Conventional Cluster with GlassFish Cluster Yes Completed

Dependencies on other Glassfish components:

JMS-06, JMS-07, JMS-08, JMS-09, JMS-16, JMS-10 and parts of JMS12a, JMS12b are all dependent on cluster support being added to Glassfish. In particular:

  • config-api to access cluster related information
  • Listener interfaces for dynamic addition/deletion of instances from a cluster.

Task List

Task Target Milestone Start End Date Owner(s) Feature ID Status / Comments
Write and review specs M1     Nigel, Amy, Satish N/A Completed
JMS-06 Support for conventional clustering of MQ brokers in LOCAL broker mode M2     Satish JMS-6 Completed
JMS-07 Support for enhanced clustering of MQ brokers in LOCAL broker mode M2     Satish JMS-7 Completed
JMS-08 Support for conventional clustering of MQ brokers in REMOTE broker mode M2     Satish JMS-8 Completed
JMS-09 Support for enhanced clustering of MQ brokers in REMOTE broker mode M2     Satish JMS-9 Completed
JMS-10 (MQ part only) Support for conventional clustering of MQ brokers in EMBEDDED broker mode MQ issue 53 M3     Nigel JMS-10 (MQ part only) Completed
JMS-12a (MQ part only) Improve MQ conventional clustering with master broker MQ issue 52 M3     Amy JMS-12a (MQ part only) Completed
JMS-13 Integration with IBM Websphere MQ through GenericJMSRA M3     Satish JMS-13 Completed
JMS-16 Enhancements to JMS related admin commands for cluster support M3     Satish JMS-16 Completed
JMS-22 VisualVM Plugin Enhancements MQ issue 55 On hold     Nigel JMS-22  
JMS-12b (MQ part) MQ conventional clustering without master broker in EMBEDDED or LOCAL broker mode MQ issue 54 M4     Amy JMS-12b (MQ part only)  
JMS-10 (GF part) Support for conventional clustering of MQ brokers in EMBEDDED broker mode M4     Satish JMS-10 (completed) Completed
JMS-12a (GF part) Improve MQ conventional clustering with master broker M4     Satish JMS-12a (completed) Completed
JMS-25 (MQ part) Dynamic Sync Broker List of MQ Conventional Cluster with GlassFish Cluster MQ issue 63 M4     Amy/Nigel JMS-12a (MQ part only)  
JMS-12b (GF part) MQ conventional clustering without master broker in EMBEDDED or LOCAL broker mode M5     Satish JMS-12b (completed) Completed
JMS-01 JMS support for embedded Glassfish with an EMBEDDED broker M5     Satish JMS-1 Completed
JMS-03 JMS support for embedded Glassfish with a REMOTE broker M5     Satish JMS-3 Should work but not tested
JMS-17 Integrating existing JMX-based MQ broker metrics with Glassfish monitoring framework M5     Satish JMS-17  
JMS-24 Glassfish issue 11721 (GF does not allow all required passwords to be passed to managed MQ broker) M5     Satish JMS-24  
JMS-25 (GF part) Dynamic Sync Broker List of MQ Conventional Cluster with GlassFish Cluster M5     Satish JMS-25 (completed) Completed

Here's the same information in a different form, showing the internal dependency between tasks carried out by the MQ team (left column) and by the GF JMS team (right column):

      MQ Glassfish
  May 14 One-pagers: initial drafts One-pagers One-pagers
  May 21 One-pagers: review ready One-pagers One-pagers
M1 May 24 Basic infrastructure Phase 2 review with all planning complete One-pagers One-pagers Prototype for monitoring integration
M2 Jun 21 All initial integrations complete Some P1 features complete   *JMS-6* (P1) (Support for conventional clustering of MQ brokers in Local mode) JMS-7 (P1) (Support for enhanced clustering of MQ brokers in Local mode) JMS-8 (P1) (Support for conventional clustering of MQ brokers in Remote mode) JMS-9 (P1) (Support for enhanced clustering of MQ brokers in Remote mode)
M3 Jul 19 Most P1 features complete *JMS-10* (MQ part only) (P1 or P2) (Support for conventional clustering of MQ brokers in Embedded mode) JMS12a (MQ part only) (P2) (Improve MQ conventional clustering with master broker) *JMS-13* (P1) (Integration with IBM Websphere MQ through GenericJMSRA) JMS-16 (P1) (Enhancements to JMS related Admin commands for cluster support)
M4 Aug 16 SCF for cluster infrastructure and HA All P1 features complete Low P1 bug count Some P2 features complete *JMS12b* (MQ part only) (P2) (MQ conventional clustering without master broker in GlassFish EMBEDED/LOCAL Mode) JMS25 (MQ part only) (P3) (Dynamic Sync Broker List of MQ Conventional Cluster with GlassFish Cluster) JMS-10 (GF part) (P1 or P2) (Support for conventional clustering of MQ brokers in Embedded mode) JMS12a (GF part) (P2) (Improve MQ conventional clustering with master broker)
M5 Sep 13 SCF (zero P1s) All features complete   JMS-12b (GF part) (P2) (MQ conventional clustering without master broker in GlassFish EMBEDED/LOCAL Mode) JMS-24 (P2) (Glassfish issue 11721 (MQ Password file generated by GF supports only a subset of the MQ passwords list)) JMS-1 (P3) (JMS support for embedded GF with an Embedded MQ broker) JMS-3 (P3) (JMS support for embedded GF with a Remote MQ broker) JMS-17 (P3) (Integrating existing JMX based MQ broker metrics with GF monitoring framework) JMS-25 (P3) (Dynamic Sync Broker List of MQ Conventional Cluster with GlassFish Cluster)
M6 Nov 22 HCF (zero P1-P3)      

Dev Tests

  • Todo

Quality

  • Link to Test Plans

Documentation

  • Link to Documentation

References / Links

Email Alias