2013-11-26 30 views
0

我是WSO2 ESB的新手,并且遇到一个问题传输级别信息与SOAP消息名称空间URI不匹配。通过WSO2 ESB中的Axis2 webservice传输HTTP到UDP协议的数据/响应时发生错误

其实我想通过UDP传输传输请求/消息,因为我创建了一个代理服务,通过UDP传输将请求传输到实际的Web服务。
好像:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="example1" 
     transports="https http udp" 
     startOnLoad="true" 
     trace="disable"> 
    <target> 
     <inSequence> 
     <log level="full"/> 
     <send> 
      <endpoint> 
       <address uri="udp://192.168.6.200:3333/services/xyzService?contentType=application/soap+xml"> 
        <enableAddressing separateListener="true"/> 
       </address> 
      </endpoint> 
     </send> 
     </inSequence> 
     <outSequence> 
     <log level="full" /> 
     <send/> 
     </outSequence> 
    </target> 
    <publishWSDL uri="file:repository/WSO2-ws/ABC.wsdl"/> 
    </proxy> 

其他服务获得通过UDP和转移到实际的WebService消息/请求。 好像:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="example2" transports="udp" 
     startOnLoad="true" 
     trace="disable"> 
    <target> 
     <endpoint> 
     <address uri="http://192.168.6.200:8280/services/abc-demo"/> 
     </endpoint> 
     <outSequence> 
     <log level="full"/> 
     <send /> 
     </outSequence> 
    </target> 
</proxy> 

而从实际的WebService其抛出的错误传输响应返回给UDP,如:

[2013-11-26 15:06:47,375] ERROR - ProcessPacketTask Error during processing of datagram: 
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:58) 
     at org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:180) 
     at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:146) 
     at org.apache.axis2.transport.base.datagram.ProcessPacketTask.run(ProcessPacketTask.java:63) 
     at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:619) 

我没有任何想法,为什么它的发生? 如果我以错误的方式进行或者某些配置没有正确完成,请给我建议。 任何帮助,不胜感激。
我期待尽快收到你的来信。

回答

0

跟着this sample它显示UDP和HTTP之间的切换。

如上所述,您需要将UDP侦听器和发件人配置添加到<ESB_HOME>/repository/conf/axis2/axis2.xml文件。

<transportReceiver name="udp" class="org.apache.axis2.transport.udp.UDPListener"/> 
<transportSender name="udp" class="org.apache.axis2.transport.udp.UDPSender"/> 

并指定代理服务中的UDP侦听端口和内容类型。

<parameter name="transport.udp.port">9999</parameter> 
<parameter name="transport.udp.contentType">text/xml</parameter> 
+0

我已经配置在 '../如下axis2.xml'文件UDP侦听和发送者: ' \t \t <参数名称= “transport.udp.port”> 3333 \t \t <参数名称= “transport.udp.contentType”>应用/肥皂+ xml的 \t \t <参数名称=“transport.udp.maxPacketSize”> 4096 \t ' 我米面对错误而获得回响应从web服务到UDP。 请提供一些示例代码或指导。 –