[jboss-user] [EJB/JBoss] - Problems with MDBs in JBoss 5.0

javaJunior do-not-reply at jboss.com
Wed Apr 29 07:35:25 EDT 2009


Hi,

I'm starting with JBoss and having some problems with Message Driven Beans. I have a Messenger class that put a message in a queue. It works normally.

package com.jboss.ejb.teste.message;
  | 
  | import javax.jms.Connection;
  | import javax.jms.Destination;
  | import javax.jms.MessageProducer;
  | import javax.jms.ObjectMessage;
  | import javax.jms.QueueConnectionFactory;
  | import javax.jms.Session;
  | import javax.naming.InitialContext;
  | 
  | public class Messenger {
  | 
  | 	private QueueConnectionFactory connectionFactory;
  | 	private Destination destination;
  | 	
  | 	public Messenger() {
  | 		try {
  | 			InitialContext ctx = new InitialContext();
  | 			
  | 			connectionFactory = (QueueConnectionFactory) ctx.lookup("java:/ConnectionFactory");
  | 			destination = (Destination) ctx.lookup("queue/JBossTesteQueue");
  | 		}
  | 		catch (Exception exc) {
  | 			exc.printStackTrace();
  | 		}
  | 	}
  | 	
  | 	public void sendMessage(String nome) {
  | 		try {
  | 			Connection connection = connectionFactory.createQueueConnection();
  | 			Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
  | 
  | 			MessageProducer producer = session.createProducer(destination);
  | 			
  | 			ObjectMessage message = session.createObjectMessage();
  | 			message.setObject(nome);
  | 			
  | 			producer.send(message);
  | 			
  | 			session.close();
  | 			connection.close();
  | 			
  | 			System.out.println("Mensagem enviada com sucesso!");
  | 		}
  | 		catch (Exception exc) {
  | 			exc.printStackTrace();
  | 		}
  | 	}
  | 	
  | }

And have this MDB, but it doesn't run. I've already tried everything i could but no success. No Exceptions, the deploy process is OK. It simply isn't called by the JBoss when i put a messege in the queue.

package com.jboss.ejb.teste.message;
  | 
  | import java.sql.Connection;
  | import java.sql.DriverManager;
  | import java.sql.PreparedStatement;
  | import java.text.SimpleDateFormat;
  | import java.util.Date;
  | 
  | import javax.annotation.Resource;
  | import javax.ejb.ActivationConfigProperty;
  | import javax.ejb.MessageDriven;
  | import javax.ejb.MessageDrivenContext;
  | import javax.jms.JMSException;
  | import javax.jms.Message;
  | import javax.jms.MessageListener;
  | import javax.jms.ObjectMessage;
  | 
  | @MessageDriven(
  | 	    name = "MessageConsumer",
  | 	    activationConfig = {
  | 	        @ActivationConfigProperty(
  | 	            propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
  | 	        @ActivationConfigProperty(
  | 	            propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
  | 	        @ActivationConfigProperty(
  | 	            propertyName = "destination", propertyValue = "queue/JBossTesteQueue")
  | 	    }
  | 	)
  | public class MessageConsumer implements MessageListener {
  | 
  | 	@Resource
  | 	private MessageDrivenContext context;
  | 	
  | 	public void onMessage(Message message) {
  | 		try {
  | 			ObjectMessage objectMessage = (ObjectMessage) message;
  | 			
  | 			String time = new SimpleDateFormat("dd/MM/yyyy - HH:mm:ss").format(new Date());
  | 			System.out.println("Mensagem recebida em " + time);
  | 			System.out.println("Content: " + objectMessage.getObject());
  | 			
  | 
  | 			Connection conn = null;
  | 			PreparedStatement ps = null;
  | 
  | 			try {
  | 				Class.forName("com.mysql.jdbc.Driver");
  | 				conn = DriverManager.getConnection("jdbc:mysql://localhost/JBossEJBTeste", "root", "admin");
  | 				
  | 				ps = conn.prepareStatement("insert into teste_table (descricao) values ?");
  | 				ps.setString(1, objectMessage.getObject() + " - " + time);
  | 				
  | 				ps.execute();
  | 			}
  | 			catch (Exception exc) {
  | 				exc.printStackTrace();
  | 			}
  | 			finally {
  | 				try {
  | 					ps.close();
  | 					conn.close();
  | 				}
  | 				catch (Exception exc) {}
  | 			}
  | 			
  | 		}
  | 		catch (JMSException exc) {
  | 			exc.printStackTrace();
  | 			context.setRollbackOnly();
  | 		}
  | 	}
  | 
  | }

Here is the ejb-jar.xml file:

<?xml version="1.0" encoding="UTF-8"?>
  | <ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" version="3.0">
  |   <display-name>JBossEJBTeste_ejb</display-name>
  |   <enterprise-beans>
  |     <message-driven>
  |       <ejb-name>MessageConsumer</ejb-name>
  |       <ejb-class>com.jboss.ejb.teste.message.MessageConsumer</ejb-class>
  |       <transaction-type>Container</transaction-type>
  |       <message-destination-type>javax.jms.Queue</message-destination-type>
  |     </message-driven>
  |   </enterprise-beans>
  | </ejb-jar>
  |   | 
  |   | And here is the jboss.xml file:
  |   | 
  |   | <?xml version="1.0" encoding="UTF-8"?>
  |   |   | 
  |   |   | <jboss>
  |   |   | 	<enterprise-beans>
  |   |   | 		<message-driven>
  |   |   | 			<ejb-name>MessageConsumer</ejb-name>
  |   |   | 			<configuration-name>Standard Message Driven Bean</configuration-name>
  |   |   | 			<destination-jndi-name>queue/JBossTesteQueue</destination-jndi-name>
  |   |   | 			<activation-config>
  |   |   | 				<activation-config-property>
  |   |   | 					<activation-config-property-name>destinationType</activation-config-property-name>
  |   |   | 					<activation-config-property-value>javax.jms.Queue</activation-config-property-value>
  |   |   | 				</activation-config-property>
  |   |   | 			</activation-config>
  |   |   | 		</message-driven>
  |   |   | 	</enterprise-beans>
  |   |   | </jboss>
  |   | 
  |   | Could someone help me?
  |   | 
  |   | Perhaps, i'm sorry about my english, i'm brazilian... but i think it can be read =)

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4227540#4227540

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4227540



More information about the jboss-user mailing list