users@connector-spec.java.net

[connector-spec-users] Re: MessageEndpointFactory.getActivationName in CONNECTOR_SPEC-1

From: Nigel Deakin <nigel.deakin_at_oracle.com>
Date: Thu, 10 Jan 2013 20:21:13 +0000

On 10/01/2013 19:54, Sivakumar Thyagarajan wrote:
> Hi Nigel
> [copying the EG list, and the connector-spec users list. I think Nigel can post only to the users list, and so EG
> members, please ensure that you copy the users list in your response]

If you've set things up correctly, emails sent to the EG list will get copied to the user list.

>
> In the JIRA issue http://java.net/jira/browse/CONNECTOR_SPEC-1 that you had filed, there was a recommendation for the
> introduction of a new method getActivationName in MessageEndpointFactory. In a recent EG meeting [1], we discussed this,
> and there was concern that this addition would impact all MEF implementations (implementations that could be non-EE,
> non-MDB container).
>
> There was a suggestion that this requirement could probably be worked through a required JMS ActivationSpec
> configuration property. If the MessageEndpoint application developer specifies the value for this, we would not need the
> MEF implementation to provide this.
>
> Could you please provide more information on the exact usecase that would need this capability? I had tried to summarize
> the usecase as I understood it at [2], but I am sure you would be able to help us understand the requirements better and
> see if we can come up with an alternative.

This is an ease of use feature. Currently when a user configures a MDB to consume messages from a durable topic
subscription they have to set the subscriptionName to a name which is unique to the deployed MDB they are using. This
could be any name, so long as it is the same on each instance in the app server cluster (which is why it can't be
generated by the RA or JMS provider itself). A common convention it to base the name on the MDB name to make the name
user-readable in tools.

The reason for this new feature is to allow users to leave subscriptionName unset rather than set it manually to a value
that the container already knows. Some vendors (e.g. WebLogic) already allow this as a non-standard feature.

I don't mind whether the MDB name is passed to the RA by the JCA runtime or by the MDB container. Several months ago the
Java EE and EJB spec leads agreed that the EJB spec would specify that this information would be made available as a
JNDI entity at java:comp/UniqueMDBName, and it was added to the draft EJB 3.2 spec. However Siva commented more recently
that it was not possible to lookup such entities during endpoint activation, which is why it was suggested passing in
this information via the MessageEndpointFactory. This feature was therefore removed from the draft EJB 3.2 spec on the
basis that it would be added to the JCA spec.

Nigel