1 Reply Latest reply on Apr 27, 2009 2:46 AM by Ross Nicholson

    Bridge - Cannot get once and only once working

    Ross Nicholson Apprentice

      I am using the latest beta release 5.1.0.Beta of AS5. On the previous stable release there was a bug with bridges where a bridge would not correctly deploy on startup of JBoss. This issue no longer exists on the beta.

      I have a bridge setup between two different physical machines. Everything works fine once the QualityOfServiceMode in the bridge configuration is set to QOS_AT_MOST_ONCE or QOS_DUPLICATES_OK. If I set QualityOfServiceMode to QOS_ONCE_AND_ONLY_ONCE then I get the following error:

      2009-04-21 12:59:49,157 ERROR [org.jboss.resource.adapter.jms.inflow.JmsActivation] (WorkManager(2)-2) Unable to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@12324c2(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@a5061b destination=queue/speQueueDownstreamIn destinationType=javax.jms.Queue tx=true durable=false reconnect=10 provider=java:/DefaultJMSProvider user=null maxMessages=1 minSession=1 maxSession=15 keepAlive=60000 useDLQ=true DLQHandler=org.jboss.resource.adapter.jms.inflow.dlq.GenericDLQHandler DLQJndiName=queue/DLQ DLQUser=null DLQMaxResent=5)
      javax.jms.JMSSecurityException: User null is NOT authenticated
       at org.jboss.jms.server.jbosssx.JBossASSecurityMetadataStore.authenticate(JBossASSecurityMetadataStore.java:223)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(Unknown Source)
       at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(Unknown Source)
       at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(Unknown Source)
       at com.sun.jmx.mbeanserver.PerInterface.invoke(Unknown Source)
       at com.sun.jmx.mbeanserver.MBeanSupport.invoke(Unknown Source)
       at javax.management.StandardMBean.invoke(Unknown Source)
       at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
       at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
       at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
       at $Proxy109.authenticate(Unknown Source)
       at org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint.createConnectionDelegateInternal(ServerConnectionFactoryEndpoint.java:233)
       at org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint.createConnectionDelegate(ServerConnectionFactoryEndpoint.java:171)
       at org.jboss.jms.server.endpoint.advised.ConnectionFactoryAdvised.org$jboss$jms$server$endpoint$advised$ConnectionFactoryAdvised$createConnectionDelegate$aop(ConnectionFactoryAdvised.java:108)
       at org.jboss.jms.server.endpoint.advised.ConnectionFactoryAdvised.createConnectionDelegate(ConnectionFactoryAdvised.java)
       at org.jboss.jms.wireformat.ConnectionFactoryCreateConnectionDelegateRequest.serverInvoke(ConnectionFactoryCreateConnectionDelegateRequest.java:91)
       at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:143)
       at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:908)
       at org.jboss.remoting.transport.local.LocalClientInvoker.invoke(LocalClientInvoker.java:106)
       at org.jboss.remoting.Client.invoke(Client.java:1708)
       at org.jboss.remoting.Client.invoke(Client.java:612)
       at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.org$jboss$jms$client$delegate$ClientConnectionFactoryDelegate$createConnectionDelegate$aop(ClientConnectionFactoryDelegate.java:171)
       at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.invokeTarget(ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.java)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
       at org.jboss.jms.client.container.StateCreationAspect.handleCreateConnectionDelegate(StateCreationAspect.java:81)
       at org.jboss.aop.advice.org.jboss.jms.client.container.StateCreationAspect_z_handleCreateConnectionDelegate_8584105.invoke(StateCreationAspect_z_handleCreateConnectionDelegate_8584105.java)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
       at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.createConnectionDelegate(ClientConnectionFactoryDelegate.java)
       at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:205)
       at org.jboss.jms.client.JBossConnectionFactory.createQueueConnection(JBossConnectionFactory.java:101)
       at org.jboss.jms.client.JBossConnectionFactory.createQueueConnection(JBossConnectionFactory.java:95)
       at org.jboss.resource.adapter.jms.inflow.dlq.AbstractDLQHandler.setupDLQConnection(AbstractDLQHandler.java:137)
       at org.jboss.resource.adapter.jms.inflow.dlq.AbstractDLQHandler.setup(AbstractDLQHandler.java:83)
       at org.jboss.resource.adapter.jms.inflow.dlq.JBossMQDLQHandler.setup(JBossMQDLQHandler.java:48)
       at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupDLQ(JmsActivation.java:413)
       at org.jboss.resource.adapter.jms.inflow.JmsActivation.setup(JmsActivation.java:351)
       at org.jboss.resource.adapter.jms.inflow.JmsActivation.handleFailure(JmsActivation.java:292)
       at org.jboss.resource.adapter.jms.inflow.JmsActivation$SetupActivation.run(JmsActivation.java:733)
       at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)
       at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       at java.lang.Thread.run(Unknown Source)
      
      


      This mode worked on the previous release I used 5.0.1.GA.

      I have added the following to the "jta" properties in "conf/jbossts-properties.xml":


       <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
       value="com.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
       <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING2"
       value="com.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/RemoteJMSProvider"/>
      


      I thought that this was the only configuration change required for QOS_ONCE_AND_ONLY_ONCE bridging.

      Here is one of my bridge configurations:

      <mbean code="org.jboss.jms.server.bridge.BridgeService" name="jboss.messaging:service=Bridge,name=EngineToHandlerBridge" xmbean-dd="xmdesc/Bridge-xmbean.xml">
      
       <depends optional-attribute-name="SourceProviderLoader">jboss.messaging:service=JMSProviderLoader,name=JMSProvider</depends>
       <depends optional-attribute-name="TargetProviderLoader">jboss.messaging:service=JMSProviderLoader,name=RemoteJMSProvider</depends>
      
       <attribute name="SourceDestinationLookup">/queue/speQueueToHandler</attribute>
      <!-- <attribute name="SourceUsername">guest</attribute>
       <attribute name="SourcePassword">guest</attribute> -->
       <attribute name="TargetDestinationLookup">/queue/speQueueFromEngine</attribute>
      <!-- <attribute name="TargetUsername">guest</attribute>
       <attribute name="TargetPassword">guest</attribute> -->
       <attribute name="QualityOfServiceMode">2</attribute>
       <attribute name="MaxBatchSize">1</attribute>
       <attribute name="MaxBatchTime">-1</attribute>
       <attribute name="FailureRetryInterval">5000</attribute>
       <attribute name="MaxRetries">-1</attribute>
       <attribute name="AddMessageIDInHeader">false</attribute>
      </mbean>
      
      


      Is there anything else required for a bridge of this type in the new release? I'm stumped as to how to get this to work.

      Thanks,

      Ross.