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#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...