Any updates on this issue ?
------------------
>> What I said is licenced under CC-by-nd :)
By Gavin.Zhang_at_Beijing.COM
Email: javafuns_at_baturu.com
Blog:
http://blog.baturu.com
------------------ Original ------------------
From: "Gustavo Henrique Orair"<gustavo.orair_at_gmail.com>;
Date: Fri, Oct 28, 2011 02:05 AM
To: "users"<users_at_glassfish.java.net>;
Subject: Re: Help with MDB deployment descriptor
So, the solution would be:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="3.1" xmlns="
http://java.sun.com/xml/ns/javaee"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd">
<enterprise-beans>
<message-driven>
<ejb-name>ServiceActivator</ejb-name>
<!--<mapped-name>jms/serviceActivatorDestination</mapped-name>-->
<message-destination-link>serviceActivatorDestination</message-destination-link>
</message-driven>
</enterprise-beans>
<assembly-descriptor>
<message-destination>
<description>Destination of Service Activator</description>
<message-destination-name>serviceActivatorDestination</message-destination-name>
<lookup-name>jms/serviceActivatorDestination</lookup-name>
</message-destination>
</assembly-descriptor>
</ejb-jar>
However, presently it does not work?
Best regards,
---------------------------------------------------------------------------------------------------------------------
Gustavo Henrique Orair
------------------------------------------------------------------------------------------------------------------
2011/10/27 Cheng Fang <cheng.fang_at_oracle.com>
Nigel just reminded that the use of <message-destination-link> for this purpose is still broken due to issue
http://java.net/jira/browse/GLASSFISH-7302
-cheng
On 10/26/11 8:24 PM, Cheng Fang wrote:
<message-destination-ref> specifies a messaging resource that will be used by your MDB bean class during message processing (not receiving messaging). <message-destination-ref> is optional and your bean class may not need it for processing.
To specify the messaging destination your bean class is listening to, use message-destination-link, which means you also need to declare a <message-destination> that you will link to it.
Map the <message-destination> to its physical target in appserver with glassfish-web.xml or glassfish-ejb-jar.xml or glassfish-application.xml.
-cheng
On 10/26/11 2:01 PM, guru_gho_at_hotmail.com wrote:
I am searching for the best way to write the deployment descriptor file
for a MDB Bean.
I saw examples instructing to write as mapped-name the JNDI name the
MDB will consume.
So, it may be used:
<message-driven>
<ejb-name>ServiceActivator</ejb-name>
<mapped-name>jms/myQueue</mapped-name
</message-driven>
However, it may cause confusion to unexperienced deployers that does
not understand too well JMS technology.
So, I tried an alternative approach where we can explicitly specify the
message destination JNDI:
<message-driven>
<ejb-name>ServiceActivator</ejb-name>
<!--<mapped-name>jms/myQueue</mapped-name> -->
<activation-config>
<!-- For JMS message-driven beans,
the following property names are recognized:
acknowledgeMode, messageSelector, destinationType,
subscriptionDurability
-->
<activation-config-property>
<activation-config-property-name>destinationType</activation-config-pro
perty-name>
<activation-config-property-value>javax.jms.Queue</activation-config-pr
operty-value>
</activation-config-property>
</activation-config>
<message-destination-ref>
<!--<description>Reference to the Queue consumed by
the MDB</description> -->
<!-- The message-destination-ref-name element specifies
the name of a message destination reference;
its value is the message destination reference name
used in the component code.
The name is a JNDI name relative to the
java:comp/env context and must be unique within an component.
-->
<message-destination-ref-name>jms/myQueue</message-destination-ref-name
<message-destination-type>javax.jms.Queue</message-destination-type>
<message-destination-usage>Consumes</message-destination-usage>
</message-destination-ref>
</message-driven>
But this alternative do not work and fail with the following message:
[#|2011-10-21T15:31:21.844-0200|SEVERE|glassfish3.1.1|javax.enterprise.
system.container.ejb.mdb.com.sun.ejb.containers|_ThreadID=22;_ThreadNam
e=Thread-2;|MDB00017: [ServiceActivator]: Exception in creating
message-driven bean container:
[com.sun.appserv.connectors.internal.api.ConnectorRuntimeException:
Error in Runtime DD: missing destination JNDI name]|#]
[#|2011-10-21T15:31:21.846-0200|SEVERE|glassfish3.1.1|javax.enterprise.
system.container.ejb.mdb.com.sun.ejb.containers|_ThreadID=22;_ThreadNam
e=Thread-2;|com.sun.appserv.connectors.internal.api.ConnectorRuntimeExc
eption
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException:
Error in Runtime DD: missing destination JNDI name
Is it a Glassfish bug?
If not, what is the correct way to explicitly set the JNDI destination
name? I think using activation config destinationName property may not
work nor be EJB 3.1 spec compliant.
NOTE: My examples were based on section 16.9.2 from the EJB 3.1 spec. I
couldn't find how my example differs from the example stated in specs.
Best regards,
Orair.