[jboss-user] [EJB 3.0] - Not able to create durable subscription in MDB
alllle
do-not-reply at jboss.com
Tue Jan 30 19:03:48 EST 2007
I am using JBoss 4.04GA SP2 and JBoss Messaging 1.0.2SP2.
I want to create a MDB in EJB3 that creates durable subscription to a topic. Since the topic requires a valid user/pass, EJB3 annotation along was not sufficient. I therefore, created the ejb-jar.xml and jboss.xml file that are packaged with my Jar file, which is deployed inside an EAR.
I got the following error when deploying the EAR:
| 17:48:46,234 WARN mdb.MDB - JMS provider failure detected:
| javax.jms.JMSException: Cannot create durable subscriber without a valid client ID
| at org.jboss.jms.server.endpoint.ServerSessionEndpoint.createConsumerDelegate(ServerSessionE
| ndpoint.java:190)
| at org.jboss.jms.server.endpoint.advised.SessionAdvised.org$jboss$jms$server$endpoint$advise
| d$SessionAdvised$createConsumerDelegate$aop(SessionAdvised.java:90)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
|
But I have already put in the client id as well as the subscription id in the jboss.xml file. Here is the content:
<?xml version="1.0" encoding="UTF-8"?>
| <!DOCTYPE jboss PUBLIC
| "-//JBoss//DTD JBOSS 4.0//EN"
| "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
| <jboss>
| <enterprise-beans>
| <message-driven>
| <ejb-name>notificationMDB</ejb-name>
| <destination-jndi-name>topic/Update</destination-jndi-name>
| <mdb-user>user</mdb-user>
| <mdb-passwd>pass</mdb-passwd>
| <mdb-client-id>MyDurableSub</mdb-client-id>
| <mdb-subscription-id>mdb</mdb-subscription-id>
| <configuration-name>Standard Message Driven Bean</configuration-name>
| </message-driven>
| </enterprise-beans>
| </jboss>
And the ejb-jar.xml file:
<?xml version='1.0' encoding='UTF-8' ?>
|
| <ejb-jar>
| <enterprise-beans>
| <message-driven>
| <ejb-name>notificationMDB</ejb-name>
| <ejb-class>com.company.ejb.NotificationMDB</ejb-class>
| <transaction-type>Container</transaction-type>
| <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
| <message-driven-destination>
| <destination-type>javax.jms.Topic</destination-type>
| <subscription-durability>Durable</subscription-durability>
| </message-driven-destination>
| </message-driven>
| </enterprise-beans>
| </ejb-jar>
I've also stripped out all EJB3 annotations from the NotificationMDB class. When debug into the JBoss code, the code where the error was thrown is:
String clientID = connectionEndpoint.getClientID();
| if (clientID == null)
| {
| throw new JMSException("Cannot create durable subscriber without a valid client ID");
| }
|
| subscription = cm.getDurableSubscription(clientID, subscriptionName, ms, pm, mm);
|
because the clientID is null. Inspecting the stack tree, I saw the mdb-user and mdb-password are read correctly. I don't know where the client-id and subscription-id are stored. The value of the subscriptionName passed into the above method is set to string "subscriptionName".
Can anyone help? Thanks!
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4008571#4008571
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4008571
More information about the jboss-user
mailing list