MDB deployment problem
pranavakumar Oct 26, 2005 2:38 AMHai every one,
when i put MDB deployment jar file in JBOSS deploy folder i am getting
these exception.
11:10:46,765 WARN [JMSContainerInvoker] JMS provider failure detected:
javax.jms.JMSException: Error creating the dlq connection: XAConnectionFactory not bound
at org.jboss.ejb.plugins.jms.DLQHandler.createService(DLQHandler.java:171)
at org.jboss.system.ServiceMBeanSupport.jbossInternalCreate(ServiceMBeanSupport.java:237)
at org.jboss.system.ServiceMBeanSupport.create(ServiceMBeanSupport.java:164)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker.innerCreate(JMSContainerInvoker.java:542)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker.startService(JMSContainerInvoker.java:764)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker$ExceptionListenerImpl.onException(JMSContainerInvoker.java:1267)
at org.jboss.ejb.plugins.jms.JMSContainerInvoker$1.run(JMSContainerInvoker.java:776)
My code is
package com.nabil.ejb; import javax.ejb.MessageDrivenBean; import javax.ejb.MessageDrivenContext; import javax.ejb.EJBException; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.Queue; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; import javax.jms.QueueSender; import javax.jms.QueueSession; import javax.jms.TextMessage; import javax.naming.InitialContext; import javax.naming.NamingException; public class MyMDB implements MessageDrivenBean, MessageListener { MessageDrivenContext context = null; QueueConnection connection; QueueSession session; public MyMDB() { System.out.println("Constructing MyMDB"); } public void setMessageDrivenContext(MessageDrivenContext context) { this.context = context; System.out.println("setMessageDrivenContext"); } public void ejbCreate() throws EJBException { System.out.println("ejbCreate"); try { InitialContext initContext = new InitialContext(); QueueConnectionFactory qcf = (QueueConnectionFactory) initContext.lookup("java:comp/env/jms/QCF"); connection = qcf.createQueueConnection(); session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); connection.start(); } catch(Exception e) { throw new EJBException("Failed to initialize MyMDB", e); } } public void ejbRemove() { System.out.println("ejbRemove"); context = null; try { if( session != null ) session.close(); if( connection != null ) connection.close(); } catch(JMSException e) { e.printStackTrace(); } } public void onMessage(Message msg) { System.out.println("onMessage"); try { TextMessage message = (TextMessage) msg; Queue queue = (Queue) msg.getJMSReplyTo(); QueueSender sender = session.createSender(queue); TextMessage message2 = session.createTextMessage(message.getText()); sender.send(message2); sender.close(); } catch(Exception e) { e.printStackTrace(); } } }
ejb-jar.XMl is
<?xml version="1.0"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <enterprise-beans> <message-driven> <ejb-name>MyMDB</ejb-name> <ejb-class>com.nabil.ejb.MyMDB</ejb-class> <transaction-type>Container</transaction-type> <acknowledge-mode>AUTO_ACKNOWLEDGE</acknowledge-mode> <message-driven-destination> <destination-type>javax.jms.Queue</destination-type> </message-driven-destination> <resource-ref> <res-ref-name>jms/QCF</res-ref-name> <res-type>javax.jms.QueueConnectionFactory</res-type> <res-auth>Container</res-auth> </resource-ref> </message-driven> </enterprise-beans> </ejb-jar>
jboss.xml is
<?xml version="1.0" encoding="UTF-8"?> <jboss> <enterprise-beans> <message-driven> <ejb-name>MyMDB</ejb-name> <destination-jndi-name>queue/MyQueue</destination-jndi-name> <resource-ref> <res-ref-name>jms/QCF</res-ref-name> <jndi-name>QueueConnectionFactory</jndi-name> </resource-ref> </message-driven> </enterprise-beans> </jboss>