I am currently experiencing a problem with using JMS. I am not sure if this is directly related to GlassFish or not. I have 2 Message Driven Beans, each reside in different Enterprise Application Deployments. When sending a message to my first MDB it appears in my log that the second MDB reads the message. Here is the configuration files and code.
1st Applications sun-resource.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN" "
http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd">
<resources>
<admin-object-resource enabled="true" jndi-name="jms/MTester" object-type="user" res-adapter="jmsra" res-type="javax.jms.Queue">
<description/>
<property name="Name" value="PhysicalQueue"/>
</admin-object-resource>
<connector-resource enabled="true" jndi-name="jms/MTesterFactory" object-type="user" pool-name="jms/MTesterFactoryPool">
<description/>
</connector-resource>
<connector-connection-pool associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-definition-name="javax.jms.QueueConnectionFactory" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="true" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="jms/MTesterFactoryPool" pool-resize-quantity="2" resource-adapter-name="jmsra" steady-pool-size="8" validate-atmost-once-period-in-seconds="0"/>
</resources>
1st Applications sun-ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "
http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<sun-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>MTesterSessionBean</ejb-name>
<resource-ref>
<res-ref-name>jms/MTesterFactory</res-ref-name>
<jndi-name>jms/MTesterFactory</jndi-name>
</resource-ref>
<message-destination-ref>
<message-destination-ref-name>jms/MTester</message-destination-ref-name>
<jndi-name>jms/MTester</jndi-name>
</message-destination-ref>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
1st MDB Code
package com.mdb.test;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
@MessageDriven(mappedName = "jms/MTester", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class MTesterBean implements MessageListener {
public MTesterBean() {
}
public void onMessage(Message message) {
if(message instanceof TextMessage) {
try {
TextMessage tm = (TextMessage) message;
System.out.println(tm.getText());
}
catch (JMSException jMSException) {
}
}
}
}
2nd Applications sun-resource.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN" "
http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd">
<resources>
<jdbc-resource enabled="true" jndi-name="beltmasta" object-type="user" pool-name="post-gre-sqlPool"/>
<admin-object-resource enabled="true" jndi-name="jms/SalesOrderSubmitLogger" object-type="user" res-adapter="jmsra" res-type="javax.jms.Queue">
<description/>
<property name="Name" value="PhysicalQueue"/>
</admin-object-resource>
<connector-resource enabled="true" jndi-name="jms/SalesOrderSubmitLoggerFactory" object-type="user" pool-name="jms/SalesOrderSubmitLoggerFactoryPool">
<description/>
</connector-resource>
<jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="org.postgresql.ds.PGSimpleDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="200" max-wait-time-in-millis="60000" name="post-gre-sqlPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="56" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
<property name="databaseName" value="beltmasta3"/>
<property name="serverName" value="**.**.**.**"/>
<property name="portNumber" value="5432"/>
<property name="User" value="postgres"/>
<property name="Password" value="****"/>
<property name="URL" value="jdbc:postgresql://**.**.**.**:5432/beltmasta3"/>
<property name="driverClass" value="org.postgresql.Driver"/>
</jdbc-connection-pool>
<connector-connection-pool associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-definition-name="javax.jms.QueueConnectionFactory" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="true" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="jms/SalesOrderSubmitLoggerFactoryPool" pool-resize-quantity="2" resource-adapter-name="jmsra" steady-pool-size="8" validate-atmost-once-period-in-seconds="0"/>
</resources>
2nd Applications sun-ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "
http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<sun-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>InvoiceFactoryBean</ejb-name>
<resource-ref>
<res-ref-name>jms/CostUpdaterFactory</res-ref-name>
<jndi-name>jms/CostUpdaterFactory</jndi-name>
</resource-ref>
<message-destination-ref>
<message-destination-ref-name>jms/SalesOrderSubmitLogger</message-destination-ref-name>
<jndi-name>jms/SalesOrderSubmitLogger</jndi-name>
</message-destination-ref>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
2nd Applications MDB Code
package beltmasta.ejb.message;
import beltmasta.ejb.persistance.LogRecord;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@MessageDriven(mappedName = "jms/SalesOrderSubmitLogger", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class SaleOrderSubmitLoggerBean implements MessageListener {
@PersistenceContext
private EntityManager em;
public SaleOrderSubmitLoggerBean() {
}
public void onMessage(Message message) {
System.out.println("SalesOrderSubmitLoggerBean->onMessage(Message): Message Received");
if(message instanceof ObjectMessage) {
try {
ObjectMessage omsg = (ObjectMessage) message;
Object object = omsg.getObject();
if(object instanceof LogRecord) {
LogRecord lr = (LogRecord)object;
System.out.println("SalesOrderSubmitLoggerBean->onMessage(Message): Persisting Log Record");
em.persist(lr);
}
} catch (JMSException ex) {
Logger.getLogger(SaleOrderSubmitLoggerBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public void persist(Object object) {
em.persist(object);
}
}
Any help on this matter would be very appreciated.
[Message sent by forum member 'ddurst' (ddurst)]
http://forums.java.net/jive/thread.jspa?messageID=292737