Sunday, April 10, 2016

[WSO2][ESB][MB] Transport message types are differ


Environment - WSO2 ESB 5.0.0 Alpha
                     WSO2 MB 3.1.0 (JMS broker)
                          jdk1.8.0_72

Preconditions: ESB should be configured with MB. (How to ?)
                          MB up and running (Which having 1 offset)
                          ESB should be up and running.
                          Created JMS message store in ESB.

Sample Configuration:
 <messageStore  
     class="org.apache.synapse.message.store.impl.jms.JmsStore" name="JMSStore">  
     <parameter name="store.jms.destination">JMSMS</parameter>  
     <parameter name="store.failover.message.store.name">JMSStore</parameter>  
     <parameter name="store.producer.guaranteed.delivery.enable">false</parameter>  
     <parameter name="store.jms.cache.connection">true</parameter>  
     <parameter name="java.naming.factory.initial">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>  
     <parameter name="java.naming.provider.url">repository/conf/jndi.properties</parameter>  
     <parameter name="store.jms.JMSSpecVersion">1.1</parameter>  
   </messageStore>  
                                
                             Created Proxy to publish messages to JMS message store.

Sample Configuration:
 <proxy name="JMSStoreProxy" startOnLoad="true" transports="https http">  
     <description/>  
     <target>  
       <inSequence>  
         <log/>  
         <property name="FORCE_SC_ACCEPTED" scope="axis2" value="true"/>  
         <property name="OUT_ONLY" value="true"/>  
         <log level="custom">  
           <property name="STATUS" value="StoringMessage"/>  
         </log>  
         <store messageStore="JMSStore"/>  
       </inSequence>  
     </target>  
   </proxy>  


Situation : Created a queue in MB called "JMSMS
               Going to publish messages to the proxy of ESB. Published SOAP message to proxy
  
Error:
 [2016-04-11 11:12:57,127] ERROR - RelayUtils Error while building Passthrough stream  
 org.apache.axiom.soap.SOAPProcessingException: Transport level information does not match with SOAP Message namespace URI  
      at org.apache.axis2.builder.BuilderUtil.validateSOAPVersion(BuilderUtil.java:745)  
      at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:68)  
      at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:148)  
      at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:137)  
      at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:100)  
      at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)  
      at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:49)  
      at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:160)  
      at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:197)  
      at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)  
      at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:395)  
      at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:142)  
      at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)  
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)  
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)  
      at java.lang.Thread.run(Thread.java:745)  
 [2016-04-11 11:12:57,128] ERROR - SequenceMediator Error while building message  
 org.apache.axis2.AxisFault: Error while building Passthrough stream  
      at org.apache.synapse.transport.passthru.util.RelayUtils.handleException(RelayUtils.java:287)  
      at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:146)  
      at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:100)  
      at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)  
      at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:49)  
      at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:160)  
      at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:197)  
      at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)  
      at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:395)  
      at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:142)  
      at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)  
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)  
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)  
      at java.lang.Thread.run(Thread.java:745)  
 Caused by: org.apache.axiom.soap.SOAPProcessingException: Transport level information does not match with SOAP Message namespace URI  
      at org.apache.axis2.builder.BuilderUtil.validateSOAPVersion(BuilderUtil.java:745)  
      at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:68)  
      at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:148)  
      at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:137)  
      ... 12 more  


Analysis:
This is JMS transport and mistakenly sent the SOAP message. So message transaction types are different and not the type expected by the mediator.

Solution:
Publish JMS messages to the proxy.

In general terms, check your message type. You may get following error because of publishing the incorrect type of messages.