2013-04-28 92 views
0

我在WSO2 AS上有一個AdderService。然後,我創建了運輸= 「TCP」 代理服務在WSO2 ESB:WSO2 ESB TCP發送消息時發生意外錯誤

<proxy xmlns="http://ws.apache.org/ns/synapse" name="AdderServiceTCP" transports="tcp" statistics="disable" trace="enable" startOnLoad="true"> 
    <target> 
     <outSequence> 
     <log level="full"/> 
     <send/> 
     </outSequence> 
     <endpoint> 
     <address uri="http://samplehost:9765/services/AdderService/"/> 
     </endpoint> 
    </target> 
    <description></description> 
</proxy> 

我實現AdderServiceClient類像Axis2的StockQuoteClient樣品。

使用WSO2 ESB SOAP示蹤,由代理所接收的請求是:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
     <wsa:To>tcp://localhost:55000/services/AdderServiceTCP</wsa:To> 
     <wsa:MessageID>urn:uuid:b3125473-064d-4a48-9cdc-558cda8e497b</wsa:MessageID> 
     <wsa:Action>urn:add</wsa:Action> 
    </soapenv:Header> 
    <soapenv:Body> 
     <p:add xmlns:p="http://ws.apache.org/axis2"> 
     <p:value1>70</p:value1> 
     <p:value2>150</p:value2> 
     </p:add> 
    </soapenv:Body> 
</soapenv:Envelope> 

發送到客戶端的響應是:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
     <wsa:MessageID>urn:uuid:ed1424f9-c181-4d9c-b203-f37e88d0b0b7</wsa:MessageID> 
     <wsa:Action>urn:mediateResponse</wsa:Action> 
     <wsa:RelatesTo>urn:uuid:b3125473-064d-4a48-9cdc-558cda8e497b</wsa:RelatesTo> 
    </soapenv:Header> 
    <soapenv:Body> 
     <ns:addResponse xmlns:ns="http://ws.apache.org/axis2"> 
     <ns:return>220</ns:return> 
     </ns:addResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

因此,AS AdderService和代理正在運行好!

然而,經常發生這樣的異常在WSO2 ESB:

23:01:53,254 [-] [tcp-Worker-4] INFO Proxy Service AdderServiceTCP received a new message... 
    23:01:53,322 [-] [tcp-Worker-4] INFO Message To: tcp://localhost:55000/services/AdderServiceTCP 
    23:01:53,322 [-] [tcp-Worker-4] INFO SOAPAction: urn:add 
    23:01:53,323 [-] [tcp-Worker-4] INFO WSA-Action: urn:add 
    23:01:53,323 [-] [tcp-Worker-4] INFO Forwarding the message to the anonymous endpoint of the proxy service 
    23:01:53,324 [-] [tcp-Worker-4] INFO Sending message through endpoint : endpoint_1ebcda7f255c63c453527cfec85e46233762eaf68afd77ef resolving to address = http://localhost:9765/services/AdderService/ 
    23:01:53,325 [-] [tcp-Worker-4] INFO SOAPAction: urn:add 
    23:01:53,325 [-] [tcp-Worker-4] INFO WSA-Action: urn:add 
    23:01:53,371 [-] [PassThroughMessageProcessor-4] WARN ERROR_CODE : 0 
    23:01:53,373 [-] [PassThroughMessageProcessor-4] WARN ERROR_MESSAGE : Unexpected error sending message back 
    23:01:53,373 [-] [PassThroughMessageProcessor-4] WARN ERROR_DETAIL : org.apache.synapse.SynapseException: Unexpected error sending message back 
at org.apache.synapse.core.axis2.Axis2Sender.handleException(Axis2Sender.java:170) 
at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:164) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:236) 
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:443) 
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:166) 
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:217) 
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
at java.lang.Thread.run(Thread.java:722) Caused by: org.apache.axis2.AxisFault: Error while sending a TCP response 
at org.apache.axis2.transport.base.AbstractTransportSender.handleException(AbstractTransportSender.java:226) 
at org.apache.axis2.transport.tcp.TCPTransportSender.sendMessage(TCPTransportSender.java:65) at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:119) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 
at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:161) 
... 9 more Caused by: java.net.SocketException: Socket is closed at java.net.Socket.getOutputStream(Socket.java:904) at org.apache.axis2.transport.tcp.TCPTransportSender.sendMessage(TCPTransportSender.java:63) ... 12 more 
    23:01:53,378 [-] [PassThroughMessageProcessor-4] WARN ERROR_EXCEPTION : org.apache.synapse.SynapseException: Unexpected error sending message back 
    23:01:53,378 [-] [PassThroughMessageProcessor-4] WARN FaultHandler : [email protected] 
    23:01:53,379 [-] [PassThroughMessageProcessor-4] WARN Executing fault handler mediator : fault 
    23:01:53,379 [-] [PassThroughMessageProcessor-4] INFO Start : Sequence <fault> 
    23:01:53,380 [-] [PassThroughMessageProcessor-4] INFO Sequence <SequenceMediator> :: mediate() 
    23:01:53,392 [-] [PassThroughMessageProcessor-4] ERROR Error while building message 
    23:15:56,619 [-] [http-nio-9443-exec-26] INFO Building Axis service for Proxy service : AdderServiceTCP 
    23:15:56,620 [-] [http-nio-9443-exec-26] INFO Loading the WSDL : <Inlined> 
    23:15:56,620 [-] [http-nio-9443-exec-26] INFO Did not find a WSDL. Assuming a POX or Legacy service 
    23:15:56,620 [-] [http-nio-9443-exec-26] INFO Exposing transports : [tcp] 
    23:15:56,621 [-] [http-nio-9443-exec-26] INFO Adding service AdderServiceTCP to the Axis2 configuration 
    23:15:56,675 [-] [http-nio-9443-exec-26] INFO Successfully created the Axis2 service for Proxy service : AdderServiceTCP 

而在客戶端顯示:

 [java] 13/04/27 23:48:58 ERROR tcp.TCPTransportSender: Error while processi 
ng response 
    [java] org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxEOFException: 
Unexpected EOF in prolog 
    [java] at [row,col {unknown-source}]: [1,0] 
    [java]  at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBui 
lder.java:296) 
    [java]  at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSO 
APEnvelope(StAXSOAPModelBuilder.java:204) 
    [java]  at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init 
>(StAXSOAPModelBuilder.java:154) 
    [java]  at org.apache.axiom.om.impl.AbstractOMMetaFactory.createStAXSOAP 
ModelBuilder(AbstractOMMetaFactory.java:73) 
    [java]  at org.apache.axiom.om.impl.AbstractOMMetaFactory.createSOAPMode 
lBuilder(AbstractOMMetaFactory.java:79) 
    [java]  at org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilde 
r(OMXMLBuilderFactory.java:196) 
    [java]  at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuil 
der.java:55) 
    [java]  at org.apache.axis2.transport.TransportUtils.createDocumentEleme 
nt(TransportUtils.java:179) 
    [java]  at org.apache.axis2.transport.TransportUtils.createSOAPMessage(T 
ransportUtils.java:145) 
    [java]  at org.apache.axis2.transport.tcp.TCPTransportSender.waitForRepl 
y(TCPTransportSender.java:94) 
    [java]  at org.apache.axis2.transport.tcp.TCPTransportSender.sendMessage 
(TCPTransportSender.java:54) 
    [java]  at org.apache.axis2.transport.base.AbstractTransportSender.invok 
e(AbstractTransportSender.java:112) 
    [java]  at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 
    [java]  at org.apache.axis2.description.OutInAxisOperationClient.send(Ou 
tInAxisOperation.java:398) 
    [java]  at org.apache.axis2.description.OutInAxisOperationClient$NonBloc 
kingInvocationWorker.run(OutInAxisOperation.java:434) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolE 
xecutor.java:1110) 
    [java]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPool 
Executor.java:603) 
    [java]  at java.lang.Thread.run(Thread.java:722) 
    [java] Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prol 
og 
    [java] at [row,col {unknown-source}]: [1,0] 
    [java]  at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanne 
r.java:677) 
    [java]  at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader 
.java:2116) 
    [java]  at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamR 
eader.java:2022) 
    [java]  at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java 
:1114) 
    [java]  at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.nex 
t(XMLStreamReaderWrapper.java:225) 
    [java]  at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamR 
eaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34) 
    [java]  at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.nex 
t(XMLStreamReaderWrapper.java:225) 
    [java]  at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StA 
XOMBuilder.java:681) 
    [java]  at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBui 
lder.java:214) 
    [java]  ... 17 more 
    [java] 13/04/27 23:48:58 ERROR tcp.TCPTransportSender: Error while sending 
a TCP request 
    [java] org.apache.axis2.AxisFault: Error while processing response 
    [java]  at org.apache.axis2.transport.base.AbstractTransportSender.handl 
eException(AbstractTransportSender.java:226) 
    [java]  at org.apache.axis2.transport.tcp.TCPTransportSender.waitForRepl 
y(TCPTransportSender.java:99) 
    [java]  at org.apache.axis2.transport.tcp.TCPTransportSender.sendMessage 
(TCPTransportSender.java:54) 
    [java]  at org.apache.axis2.transport.base.AbstractTransportSender.invok 
e(AbstractTransportSender.java:112) 
    [java]  at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 
    [java]  at org.apache.axis2.description.OutInAxisOperationClient.send(Ou 
tInAxisOperation.java:398) 
    [java]  at org.apache.axis2.description.OutInAxisOperationClient$NonBloc 
kingInvocationWorker.run(OutInAxisOperation.java:434) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolE 
xecutor.java:1110) 
    [java]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPool 
Executor.java:603) 
    [java]  at java.lang.Thread.run(Thread.java:722) 
    [java] Caused by: org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxEOF 
Exception: Unexpected EOF in prolog 
    [java] at [row,col {unknown-source}]: [1,0] 
    [java]  at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBui 
lder.java:296) 
    [java]  at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSO 
APEnvelope(StAXSOAPModelBuilder.java:204) 
    [java]  at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init 
>(StAXSOAPModelBuilder.java:154) 
    [java]  at org.apache.axiom.om.impl.AbstractOMMetaFactory.createStAXSOAP 
ModelBuilder(AbstractOMMetaFactory.java:73) 
    [java]  at org.apache.axiom.om.impl.AbstractOMMetaFactory.createSOAPMode 
lBuilder(AbstractOMMetaFactory.java:79) 
    [java]  at org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilde 
r(OMXMLBuilderFactory.java:196)Error inside callback : org.apache.axis2.AxisFaul 
t: Error while sending a TCP request 
    [java] 
    [java]  at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuil 
der.java:55) 
    [java]  at org.apache.axis2.transport.TransportUtils.createDocumentEleme 
nt(TransportUtils.java:179) 
    [java]  at org.apache.axis2.transport.TransportUtils.createSOAPMessage(T 
ransportUtils.java:145) 
    [java]  at org.apache.axis2.transport.tcp.TCPTransportSender.waitForRepl 
y(TCPTransportSender.java:94) 
    [java]  ... 8 more 
    [java] Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prol 
og 
    [java] at [row,col {unknown-source}]: [1,0] 
    [java]  at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanne 
r.java:677) 
    [java]  at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader 
.java:2116) 
    [java]  at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamR 
eader.java:2022) 
    [java]  at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java 
:1114) 
    [java]  at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.nex 
t(XMLStreamReaderWrapper.java:225) 
    [java]  at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamR 
eaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34) 
    [java]  at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.nex 
t(XMLStreamReaderWrapper.java:225) 
    [java]  at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StA 
XOMBuilder.java:681) 
    [java]  at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBui 
lder.java:214) 
    [java]  ... 17 more 

**我做錯了嗎?

謝謝你的幫助。**

回答

1

你是否在客戶端啓用了傳輸接收器配置?看起來客戶端沒有Tcp的傳輸偵聽器。

你需要在axis2.xml中有這樣的東西。

<transportReceiver name="tcp" 
         class="org.apache.axis2.transport.tcp.TCPServer"> 
     <parameter name="port">6061</parameter> 
0

Shelan。

在客戶端我已啓用TCP傳輸接收器和發送器:

<transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportListener"> 
    <parameter name="transport.tcp.port">57000</parameter> 
</transportReceiver> 
<transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/> 

然而,使用Wireshark來監控網絡通信,即TCP端口從未使用過。我相信在客戶端啓用TCP監聽器是沒有必要的。對?

謝謝。

0

Shelan。

根據您的回答,我在客戶端將useSeparareListener屬性設置爲true。現在,一切正常!

相關問題