Olá galera! Criei em JMS um Producer que gera mensagens e as aloca numa Queue. Pelo jmx-console verifiquei e essas mensagens estão sendo enviadas corretamente. Criei um EJB como MDB para efetuar a leitura, porem ele nao esta enxergando a fila.
O que pode estar errado?
O nome de fila usada é filaMalefica.
Os arquivos do MDB são esses:
Dentro da pasta META-INF que se encontra dentro do jar que por sua vez esta dentro do ear.
ejb-jar.xml
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC
'-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN'
'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'>
<ejb-jar>
<enterprise-beans>
<message-driven>
<display-name>JmsMonsterBean</display-name>
<ejb-name>JmsMonster</ejb-name>
<ejb-class>JmsMonsterBean</ejb-class>
<messaging-type>javax.jms.MessageListener</messaging-type>
<transaction-type>Container</transaction-type>
<message-destination-type>javax.jms.Queue</message-destination-type>
<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-property>
<activation-config-property-name>acknowledgeMode</activation-config-property-name>
<activation-config-property-value>Auto-acknowledge</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>subscriptionDurability</activation-config-property-name>
<activation-config-property-value>NonDurable</activation-config-property-value>
</activation-config-property>
</activation-config>
</message-driven>
</enterprise-beans>
</ejb-jar>
jboss.xml
<?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>JmsMonster</ejb-name>
<destination-jndi-name>queue/filaMalefica</destination-jndi-name>
</message-driven>
</enterprise-beans>
</jboss>
E o bean dentro do jar é esse aqui:
import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
public class JmsMonsterBean implements MessageDrivenBean, MessageListener
{
private MessageDrivenContext ctx = null;
public JmsMonsterBean( ) { }
public void setMessageDrivenContext(MessageDrivenContext ctx)
throws EJBException {
this.ctx = ctx;
}
/**
* Required creation method for message-driven beans.
*/
public void ejbCreate( ) {
// no specific action required for message-driven beans
}
/** Required removal method for message-driven beans. */
public void ejbRemove( ) {
ctx = null;
}
/**
* Implements the business logic for the MDB.
*
* @param message The JMS message to be processed.
*/
public void onMessage(Message message)
{
System.out.println("JmsMonsterBean.onMessage( ): Received message.");
System.out.println(message);
}
}
Veleu, galera. Desde já agradeço.