users@jms-spec.java.net

[jms-spec users] JMS 2.1 expert group and community meeting to discuss flexible JMS MDBs

From: Nigel Deakin <nigel.deakin_at_oracle.com>
Date: Tue, 10 Nov 2015 18:47:28 +0000

On 30/10/2015 21:18, Nigel Deakin wrote:
> We provisionally agreed to hold a meeting every two weeks on Thursdays at 0900 PST,
> which will be 1700 UK, 1800 CDT. (We have EG members in India and South Korea, for
> whom these times would probably not work. Please let me know if you'd like to attend
> but can't make that time)

As promised, our first JSR 368 virtual meeting will be on Thursday 12th November at 0900 PST, 1200 EST, 1700 UK, 1800
CET. This is a bit of an experiment but let's give it a try and see how it goes.

Expert group members and others who are interested are invited. If you're planning to attend, please drop me a direct
email in advance (so I can recognise who you are) but this is not essential. If you'd like to attend but can't make it
please let me know too.

Let's use Zoom, which is the Oracle corporate standard for video conferencing/screen sharing (so I have an account which
allows many participants) and offers a choice of audio over the internet or audio by phone. See details below. Please
try it in advance to ensure you have the appropriate client/app installed.

The meeting will last no more than 1 hour. The meeting may be recorded.

Agenda
------

1. Introductions

2. Flexible JMS MDBs: discussion of method annotations. We effectively have three options on the table currently:

- Original proposal (option A) - we dropped this in favour of option B, but I'm including it for reference
- The proposal in the Early Draft (option B)
- A new proposal (option F) from the 29th October face-to-face meeting, which I've expanded and modified slightly

Option F has some similarities with the original option A, which is why I'm including it for reference. All three
options are summarised at https://java.net/projects/jms-spec/pages/JMSListener4 . If you have a chance, please take a
look before the meeting.

3. Flexible JMS MDBs: issues relating to multiple callback methods.

There seems to be general agreement that it is desirable to allow a "flexible" JMS MDB to have multiple callback
methods. I have successfully prototyped this using a resource adapter: the JCA API makes it easy to have multiple
consumers sharing the same pool of MDB instances.

However I have discovered some issues when trying to implement it without using a resource adapter. Some application
servers (and generic resource adapters which support multiple JMS providers) implement JMS MDBs using a single
XAConnection and a ConnectionConsumer, which uses a ServerSessionPool of ServerSession objects. Other application
servers (and generic resource adapters) implement JMS MDBs using a single XAConnection, a XASession for every MDB
instance, and a thread for every MDB instance which repeatedly calls receive(). In both cases, it looks to me that
allowing multiple callback methods might mean that a MDB that two callback methods would require twice as many threads
as two separate pools of half the size, each of which has one callback method.

I'll look into, and write up, these two cases in more detail, but it looks as if we may need to extend the
ConnectionConsumer API and perhaps the normal JMS API to allow such app servers/resource adapters to implement multiple
callback methods efficiently.

This would be a big change and to avoid delaying work on flexible JMS MDBs I'll be suggesting that we defer allowing
support for multiple callback methods until we are sure everyone can implement them efficiently.

4. That should be enough for our first meeting. We can discuss other aspects of flexible JMS MDBS at later meetings.
These include parameter annotations, exception handling, conversion error handling, pluggable converters.

Oracle Zoom Conference Details
------------------------------
Subject: JSR 368 (JMS 2.1) Community meeting
URL to join the Oracle Zoom Conference: https://oracle.zoom.us/j/779443739?pwd=CzeZ1NH%2BlSY%3D

The URL above provides one click access to the Zoom conference at the scheduled time from a PC, Mac, iOS or Android device.

Alternatively go to https://oracle.zoom.us and click "Join Meeting"
Meeting ID Number: 779 443 739
Meeting Password: 009456

You can use your device's microphone and speakers, or you can use a phone:
Choose a phone number from the list at https://oracle.zoom.us/zoomconference?m=csCVlRtHCJIAmtQgZGD47bNB2ieUiEdp
Meeting ID: 779 443 739


Nigel