We are using listener ports to connect to jms topcis.
But we there are exceptions in the handling of the incoming messages, the listener ports doens't go down after x tries. It keeps trying to handle the message.
How does the listener ports need to be configured to go down after x tries?
This is our configuration at the moment:
Maximum sessions: 1
Maximum retries: 0
Maximum messages: 1
We are connecting the a JCAPS JMS provider.
Thanks!
Details on how to configure this (with a WebSphere MQ slant) are here:
http://www.ibm.com/developerworks/websphere/library/techarticles/0405_titheridge/0405_titheridge.html
But basically the fact that Maximum retries = 0 means that you should already get the behavior you desire. However that relies on the optional JMSXDeliveryCount value being set by the JCAPS JMS provider. If it isn't it won't work.
Do you have an example of one of the exceptions you mention?
Cheers, Matt.
2009-11-01 03:36:15,152 ERROR [org.hibernate.util.JDBCExceptionReporter] - The application requester cannot establish the connection. (Connection refused: connect)DSRA0010E: SQL State = 08001, Error Code = -99,999
2009-11-01 03:36:15,152 ERROR [org.hibernate.ejb.AbstractEntityManagerImpl] - Unable to mark for rollback on PersistenceException:
java.lang.UnsupportedOperationException
at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$TransactionManagerAdapter.setRollbackOnly(WebSphereExtendedJTATransactionLookup.java:161)
at org.hibernate.ejb.AbstractEntityManagerImpl.markAsRollback(AbstractEntityManagerImpl.java:421)
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:576)
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:226)
at com.ibm.ws.jpa.management.JPAExEmInvocation.persist(JPAExEmInvocation.java:348)
at com.ibm.ws.jpa.management.JPAEntityManager.persist(JPAEntityManager.java:109)
at com.nike.mst.job.dao.InterfaceMessageDaoBean.persist(InterfaceMessageDaoBean.java:45)
at com.nike.mst.tracy.service.POMasterDownloadServiceBean.createInterfaceMessage(POMasterDownloadServiceBean.java:158)
at sun.reflect.GeneratedMethodAccessor76.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:547)
at com.nike.mst.interceptor.PerformanceLogger.logPerformance(PerformanceLogger.java:36)
at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor(InterceptorProxy.java:227)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:526)
at com.nike.mst.interceptor.TraceLogger.logMethodEntry(TraceLogger.java:36)
at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor(InterceptorProxy.java:227)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:526)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.doAroundInvoke(InvocationContextImpl.java:184)
at com.ibm.ejs.container.EJSContainer.invoke(EJSContainer.java:5545)
at com.nike.mst.tracy.service.EJSLocal0SLPOMasterDownloadServiceBean_a9a80934.createInterfaceMessage(EJSLocal0SLPOMasterDownloadServiceBean_a9a80934.java)
at com.nike.mst.job.service.AbstractDownloadServiceBean.process(AbstractDownloadServiceBean.java:76)
at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:547)
at com.nike.mst.interceptor.PerformanceLogger.logPerformance(PerformanceLogger.java:36)
at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor(InterceptorProxy.java:227)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:526)
at com.nike.mst.interceptor.TraceLogger.logMethodEntry(TraceLogger.java:36)
at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor(InterceptorProxy.java:227)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:526)
at com.ibm.ejs.container.interceptors.InvocationContextImpl.doAroundInvoke(InvocationContextImpl.java:184)
at com.ibm.ejs.container.EJSContainer.invoke(EJSContainer.java:5545)
at com.nike.mst.tracy.service.EJSLocal0SLPOMasterDownloadServiceBean_a9a80934.process(EJSLocal0SLPOMasterDownloadServiceBean_a9a80934.java)
at com.nike.mst.tracy.service.POMasterProcessorMDBBean.handleMessage(POMasterProcessorMDBBean.java:98)
at com.nike.mst.tracy.service.POMasterProcessorMDBBean.onMessage(POMasterProcessorMDBBean.java:79)
at com.ibm.ejs.jms.listener.MDBWrapper$PriviledgedOnMessage.run(MDBWrapper.java:302)
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:63)
at com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrapper.java:271)
at com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:671)
at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:623)
at sun.reflect.GeneratedMethodAccessor54.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:37)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:96)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:132)
at com.ibm.ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.java:242)
at com.stc.jms.client.SessionImpl.runCC(SessionImpl.java:841)
at com.stc.jms.client.STCSession.run(STCSession.java:425)
at com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:970)
at com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:891)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:483)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
Sorry about the delay in responding to you. The exception below would be enough to drive the message listener port shutdown logic IF JMSXDeliveryCount was set. However reading the JCAPS JMS documentation at
http://search.sun.com/docs/index.jsp?qt=JMSXdeliveryCOunt&col=docs_en&locale=en
implies that it won't be set unless the message has been delivered to an error queue. So basically it will not work.
Cheers, Matt.