S
sony.antony
( We are using weblogic 8.1 on Solaris 2.9
We have a bunch of message driven beans with the transaction type as
'Container' and the acknowledge-mode mode as auto-acknowledge. They are
consuming messages from a weblogic Queue ( javax.jms.Queue ). The MBD
container is also weblogic 8.1.
We have 7 instances of the bean consuming messages.
Most of the messages are picked up and processed *only once* as
expected.
But randomly we are seeing that sometimes the same message is delivered
again ( Message.getJmsRedelivered() = true and from the log files we
can see teh same message being processed again ) eventhough it was
already picked up and processed successfully once.
We are completely lost and our production machine is in big trouble as
a result of this.
( Is it possible that weblogic uses unreliable UDP for acknowledging
messages. If yes where do we change this setting )
Any help will be greatly appreciated
Thanks
--sony
================ejb-jar.xml BEGIN
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<description>DslUpdtDdpostPrcsrMDB</description>
<ejb-name>DslUpdtDdpostPrcsrMDB</ejb-name>
<ejb-class>
com.bellsouth.snt.idm.ejb.wfac.DslUpdtDdpostPrcsrMDB
</ejb-class>
<transaction-type>Container</transaction-type>
<message-selector>
<![CDATA[ idm_state = 'dsl_updt_dd_post' ]]>
</message-selector>
<acknowledge-mode>auto-acknowledge</acknowledge-mode>
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
</message-driven-destination>
<env-entry>
<env-entry-name>MDB_NAME</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>dsl_updt_dd_post</env-entry-value>
</env-entry>
<resource-ref>
<res-ref-name>jms/QueueConnectionFactory</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</message-driven>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>DslUpdtDdpostPrcsrMDB</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
================ejb-jar.xml END
================weblogic-ejb-jar.xml BEGIN
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic
8.1.0 EJB//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>DslUpdtDdpostPrcsrMDB</ejb-name>
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>10</max-beans-in-free-pool>
<initial-beans-in-free-pool>0</initial-beans-in-free-pool>
</pool>
<destination-jndi-name>
idm.jms.clip.WfacClipResponseQueue
</destination-jndi-name>
<connection-factory-jndi-name>
idm.jms.IdmXaJmsQueueConnectionFactory
</connection-factory-jndi-name>
</message-driven-descriptor>
<transaction-descriptor>
<trans-timeout-seconds>
300
</trans-timeout-seconds>
</transaction-descriptor>
<reference-descriptor>
<resource-description>
<res-ref-name>jms/QueueConnectionFactory</res-ref-name>
<jndi-name>idm.jms.IdmXaJmsQueueConnectionFactory</jndi-name>
</resource-description>
</reference-descriptor>
<jndi-name>jms.DslUpdtDdpostPrcsrMDB</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
================weblogic-ejb-jar.xml END )
We have a bunch of message driven beans with the transaction type as
'Container' and the acknowledge-mode mode as auto-acknowledge. They are
consuming messages from a weblogic Queue ( javax.jms.Queue ). The MBD
container is also weblogic 8.1.
We have 7 instances of the bean consuming messages.
Most of the messages are picked up and processed *only once* as
expected.
But randomly we are seeing that sometimes the same message is delivered
again ( Message.getJmsRedelivered() = true and from the log files we
can see teh same message being processed again ) eventhough it was
already picked up and processed successfully once.
We are completely lost and our production machine is in big trouble as
a result of this.
( Is it possible that weblogic uses unreliable UDP for acknowledging
messages. If yes where do we change this setting )
Any help will be greatly appreciated
Thanks
--sony
================ejb-jar.xml BEGIN
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<description>DslUpdtDdpostPrcsrMDB</description>
<ejb-name>DslUpdtDdpostPrcsrMDB</ejb-name>
<ejb-class>
com.bellsouth.snt.idm.ejb.wfac.DslUpdtDdpostPrcsrMDB
</ejb-class>
<transaction-type>Container</transaction-type>
<message-selector>
<![CDATA[ idm_state = 'dsl_updt_dd_post' ]]>
</message-selector>
<acknowledge-mode>auto-acknowledge</acknowledge-mode>
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
</message-driven-destination>
<env-entry>
<env-entry-name>MDB_NAME</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>dsl_updt_dd_post</env-entry-value>
</env-entry>
<resource-ref>
<res-ref-name>jms/QueueConnectionFactory</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</message-driven>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>DslUpdtDdpostPrcsrMDB</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
================ejb-jar.xml END
================weblogic-ejb-jar.xml BEGIN
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic
8.1.0 EJB//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>DslUpdtDdpostPrcsrMDB</ejb-name>
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>10</max-beans-in-free-pool>
<initial-beans-in-free-pool>0</initial-beans-in-free-pool>
</pool>
<destination-jndi-name>
idm.jms.clip.WfacClipResponseQueue
</destination-jndi-name>
<connection-factory-jndi-name>
idm.jms.IdmXaJmsQueueConnectionFactory
</connection-factory-jndi-name>
</message-driven-descriptor>
<transaction-descriptor>
<trans-timeout-seconds>
300
</trans-timeout-seconds>
</transaction-descriptor>
<reference-descriptor>
<resource-description>
<res-ref-name>jms/QueueConnectionFactory</res-ref-name>
<jndi-name>idm.jms.IdmXaJmsQueueConnectionFactory</jndi-name>
</resource-description>
</reference-descriptor>
<jndi-name>jms.DslUpdtDdpostPrcsrMDB</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
================weblogic-ejb-jar.xml END )