[jboss-user] [JBoss Messaging] - Unable to publish after remote JBoss JMS restart

Carl Schmidt do-not-reply at jboss.com
Wed Mar 16 22:31:08 EDT 2011


Carl Schmidt [http://community.jboss.org/people/cschmidt001] created the discussion

"Unable to publish after remote JBoss JMS restart"

To view the discussion, visit: http://community.jboss.org/message/593617#593617

--------------------------------------------------------------
Hello all, 
  I've been searching quite a bit for a solution to this problem, and would appreciate any assistance, TIA.  I have a local durable MDB consuming messages from a local topic, then publishing them to a topic on a remote jboss messaging instance.

If I shut down the remote jboss instance, I get the expected warning in the local jboss logs:  


011-03-16 21:55:18,774 TRACE [org.jboss.jms.server.endpoint.ServerSessionEndpoint] (WorkManager(2)-4) SessionEndpoint[rc-kpow0dlg-1-zw6v0dlg-tyrpht-04v2gs4] acknowledging transactionally 1 messages for TX(21304556237193217):ACTIVE
2011-03-16 22:00:35,518 WARN  [org.jboss.resource.adapter.jms.JmsManagedConnection] (Thread-38) Handling jms exception failure: org.jboss.resource.adapter.jms.JmsManagedConnection at 1f6d10f
javax.jms.JMSException: Failure on underlying remoting connection
at org.jboss.jms.client.remoting.ConsolidatedRemotingConnectionListener.handleConnectionException(ConsolidatedRemotingConnectionListener.java:102)
at org.jboss.remoting.ConnectionValidator$1.run(ConnectionValidator.java:744)


Attempting to publish messages to the remote topic throws the following exception after each retry:


2011-03-16 22:01:53,985 ERROR [org.jboss.messaging.util.ExceptionUtil] (WorkManager(2)-5) SessionEndpoint[wd-9u4b1dlg-1-zw6v0dlg-tyrpht-04v2gs4] createTopic [yd-9u4b1dlg-1-zw6v0dlg-tyrpht-04v2gs4]
javax.jms.JMSException: There is no administratively defined topic with name:pendingBatching
          at org.jboss.jms.server.endpoint.ServerSessionEndpoint.createTopic(ServerSessionEndpoint.java:323)
          at org.jboss.jms.server.endpoint.advised.SessionAdvised.org$jboss$jms$server$endpoint$advised$SessionAdvised$createTopic$aop(SessionAdvised.java:110)
          at org.jboss.jms.server.endpoint.advised.SessionAdvised$createTopic_N1144803973659535745.invokeTarget(SessionAdvised$createTopic_N1144803973659535745.java)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
          at org.jboss.jms.server.container.ServerLogInterceptor.invoke(ServerLogInterceptor.java:105)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.jms.server.endpoint.advised.SessionAdvised.createTopic(SessionAdvised.java)
          at org.jboss.jms.wireformat.SessionCreateTopicRequest.serverInvoke(SessionCreateTopicRequest.java:74)
          at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:143)
          at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
          at org.jboss.remoting.transport.local.LocalClientInvoker.invoke(LocalClientInvoker.java:106)
          at org.jboss.remoting.Client.invoke(Client.java:1724)
          at org.jboss.remoting.Client.invoke(Client.java:629)
          at org.jboss.remoting.Client.invoke(Client.java:617)
          at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:189)
          at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:160)
          at org.jboss.jms.client.delegate.ClientSessionDelegate.org$jboss$jms$client$delegate$ClientSessionDelegate$createTopic$aop(ClientSessionDelegate.java:353)
          at org.jboss.jms.client.delegate.ClientSessionDelegate$createTopic_N1144803973659535745.invokeTarget(ClientSessionDelegate$createTopic_N1144803973659535745.java)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
          at org.jboss.jms.client.container.FailoverValveInterceptor.invoke(FailoverValveInterceptor.java:92)
          at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
          at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.jms.client.delegate.ClientSessionDelegate.createTopic(ClientSessionDelegate.java)
          at org.jboss.jms.client.JBossSession.createTopic(JBossSession.java:260)
          at org.jboss.resource.adapter.jms.JmsSession.createTopic(JmsSession.java:334)
          at com.companyName.appName.service.mdb.OutboundOrderListener.onMessage(OutboundOrderListener.java:35)



But once I restart the remote jboss instance, I _still_ get the above exception each time the local MDB tries to publish to the remote topic. Additional details follow:

JBoss 5.1.0
Jboss Messaging 1.4.3


jms-ds.xml 

 <tx-connection-factory>
      <jndi-name>XADefaultJMSProviderremoteJboss</jndi-name>
      <xa-transaction/>
      <rar-name>jms-ra.rar</rar-name>
      <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>
      <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property>
      <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/remoteJbossJMS</config-property>
      <max-pool-size>1</max-pool-size>
      <depends>jboss.messaging:service=ServerPeer</depends>
   </tx-connection-factory>


   <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
          name="jboss.messaging:service=JMSProviderLoader,name=remoteJbossJMS">
      <attribute name="ProviderName">remoteJbossJMS</attribute>
      <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
      <attribute name="FactoryRef">java:/XAConnectionFactory</attribute>
      <attribute name="QueueFactoryRef">java:/XAConnectionFactory</attribute>
      <attribute name="TopicFactoryRef">java:/XAConnectionFactory</attribute>
            <attribute name="Properties">
       java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
       java.naming.factory.url.pkgs=org.jnp.interfaces
       java.naming.provider.url=jnp://foo.dev.remoteJboss.companyName-inc.com:1099
      </attribute>
   </mbean>





The mdb:



package com.companyName.appName.service.mdb;




import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.Topic;




@MessageDriven(activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
        @ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "OutboundOrderListenerSubscription"),
        @ActivationConfigProperty(propertyName = "clientId", propertyValue = "OutboundOrderListener"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/orderBatchesBoundForOS"),
        @ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable"),
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
public class OutboundOrderListener implements MessageListener{




          @Resource(mappedName = "java:XADefaultJMSProviderremoteJboss")
          private ConnectionFactory connectionFactory;


          @Override
          public void onMessage(Message message) {
                    Connection connection = null;
                    boolean sendOrderException = false;
                    try {
                              connection = connectionFactory.createConnection();
                              Session session = connection.createSession(false,
                                                  Session.AUTO_ACKNOWLEDGE);
                              Topic topic = session.createTopic("pendingBatching");
                              MessageProducer publisher = session.createProducer(topic);
                              publisher.send(message);
                    } catch (JMSException e) {
                              sendOrderException = true;
                              // re-throw as run time exception because it indicates an
                              // unrecoverable error
                              throw new RuntimeException(e);
                    } finally {
                              try {
                                        if (connection != null) {
                                                  connection.close();
                                        }
                              } catch (JMSException e) {
                                        if (!sendOrderException) {
                                                  // re-throw as run time exception only if sending message
                                                  // didn't cause one
                                                  throw new RuntimeException(e);
                                        }
                              }
                    }


          }
}
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/593617#593617]

Start a new discussion in JBoss Messaging at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2042]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20110316/a8bd5eb2/attachment-0001.html 


More information about the jboss-user mailing list