Mule服务代理,COULD_NOT_READ_XML_STREAM

时间:2012-10-12 18:53:22

标签: soapui mule

我有一个服务代理设置,我能够查看wsdl,但是当我尝试使用soapUI进行测试时,它似乎暂停了。我将发布mule配置,以及soapUI日志和mule studio日志。当我在没有代理的情况下正常点击wdsl时,它是一个快速响应。

Google搜索结果似乎没有产生多少,因此对源代码,soapUI或Mule以及该问题的任何指导都会有所帮助。

Mule Flow

<flow name="UPCFlow1" doc:name="UPCFlow1">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="4040" path="upc" doc:name="HTTP" contentType="text/xml" mimeType="text/xml"/>

    <cxf:proxy-service namespace="http://searchupc.com/" service="UPCSearch" payload="envelope" wsdlLocation="http://www.searchupc.com/service/UPCSearch.asmx?WSDL"  doc:name="SOAP" enableMuleSoapHeaders="false"/>
<http:outbound-endpoint address="http://www.searchupc.com/"
    exchange-pattern="request-response" doc:name="HTTP" contentType="text/xml" mimeType="text/xml"/>
</flow>

soapUI错误日志

    Fri Oct 12 13:32:08 CDT 2012:ERROR:java.net.SocketException: socket closed
   java.net.SocketException: socket closed
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:149)
    at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:110)
    at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:264)
    at org.apache.http.impl.conn.LoggingSessionInputBuffer.readLine(LoggingSessionInputBuffer.java:115)
    at org.apache.http.impl.io.ChunkedInputStream.getChunkSize(ChunkedInputStream.java:246)
    at org.apache.http.impl.io.ChunkedInputStream.nextChunk(ChunkedInputStream.java:204)
    at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:167)
    at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:196)
    at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:155)
    at org.apache.http.util.EntityUtils.toByteArray(EntityUtils.java:100)
    at org.apache.http.entity.BufferedHttpEntity.<init>(BufferedHttpEntity.java:60)
    at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpMethodSupport.getResponseBody(HttpMethodSupport.java:281)
    at com.eviware.soapui.impl.wsdl.submit.transports.http.support.methods.ExtendedPostMethod.getResponseBody(ExtendedPostMethod.java:128)
    at com.eviware.soapui.impl.wsdl.submit.transports.http.SinglePartHttpResponse.<init>(SinglePartHttpResponse.java:49)
    at com.eviware.soapui.impl.wsdl.submit.transports.http.support.attachments.WsdlSinglePartHttpResponse.<init>(WsdlSinglePartHttpResponse.java:36)
    at com.eviware.soapui.impl.wsdl.submit.filters.HttpPackagingResponseFilter.wsdlRequest(HttpPackagingResponseFilter.java:71)
    at com.eviware.soapui.impl.wsdl.submit.filters.HttpPackagingResponseFilter.afterAbstractHttpResponse(HttpPackagingResponseFilter.java:48)
    at com.eviware.soapui.impl.wsdl.submit.filters.AbstractRequestFilter.afterRequest(AbstractRequestFilter.java:64)
    at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.java:297)
    at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:123)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Eclipse控制台

    INFO  2012-10-12 13:31:06,229 [[upc].connector.http.mule.default.receiver.02] org.mule.transport.service.DefaultTransportServiceDescriptor: Loading default outbound transformer: org.mule.transport.http.transformers.ObjectToHttpClientMethodRequest
INFO  2012-10-12 13:31:06,234 [[upc].connector.http.mule.default.receiver.02] org.mule.transport.service.DefaultTransportServiceDescriptor: Loading default response transformer: org.mule.transport.http.transformers.MuleMessageToHttpResponse
INFO  2012-10-12 13:31:06,234 [[upc].connector.http.mule.default.receiver.02] org.mule.transport.service.DefaultTransportServiceDescriptor: Loading default outbound transformer: org.mule.transport.http.transformers.ObjectToHttpClientMethodRequest
INFO  2012-10-12 13:31:06,235 [[upc].connector.http.mule.default.receiver.02] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'connector.http.mule.default.dispatcher.2040380475'. Object is: HttpClientMessageDispatcher
INFO  2012-10-12 13:31:06,239 [[upc].connector.http.mule.default.receiver.02] org.mule.lifecycle.AbstractLifecycleManager: Starting: 'connector.http.mule.default.dispatcher.2040380475'. Object is: HttpClientMessageDispatcher
WARN  2012-10-12 13:33:05,590 [[upc].connector.http.mule.default.receiver.02] org.apache.cxf.phase.PhaseInterceptorChain: Interceptor for {http://searchupc.com/}UPCSearch has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: COULD_NOT_READ_XML_STREAM
    at org.apache.cxf.databinding.stax.StaxDataBinding$XMLStreamDataWriter.write(StaxDataBinding.java:133)
    at org.apache.cxf.databinding.stax.StaxDataBinding$XMLStreamDataWriter.write(StaxDataBinding.java:117)
    at org.apache.cxf.databinding.stax.StaxDataBinding$XMLStreamDataWriter.write(StaxDataBinding.java:113)
    at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:119)
    at org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
    at org.apache.cxf.phase.PhaseInterceptorChain.resume(PhaseInterceptorChain.java:232)
    at org.mule.module.cxf.CxfInboundMessageProcessor$1.write(CxfInboundMessageProcessor.java:373)
    at org.mule.transport.http.HttpServerConnection.writeResponse(HttpServerConnection.java:315)
    at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:164)
    at org.mule.work.WorkerContext.run(WorkerContext.java:311)
    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)
Caused by: com.ctc.wstx.exc.WstxParsingException: Duplicate attribute 'name'.
 at [row,col {unknown-source}]: [29,468]
    at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:612)
    at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:485)
    at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:470)
    at com.ctc.wstx.sr.AttributeCollector.throwDupAttr(AttributeCollector.java:522)
    at com.ctc.wstx.sr.NsAttributeCollector.resolveNamespaces(NsAttributeCollector.java:248)
    at com.ctc.wstx.sr.NsInputElementStack.resolveAndValidateElement(NsInputElementStack.java:351)
    at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2923)
    at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2783)
    at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1048)
    at org.mule.module.xml.stax.DelegateXMLStreamReader.next(DelegateXMLStreamReader.java:237)
    at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:551)
    at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:513)
    at org.apache.cxf.databinding.stax.StaxDataBinding$XMLStreamDataWriter.write(StaxDataBinding.java:124)
    ... 13 more
ERROR 2012-10-12 13:33:05,595 [[upc].connector.http.mule.default.receiver.02] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Software caused connection abort: socket write error
java.net.SocketException: Software caused connection abort: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(Unknown Source)
    at java.net.SocketOutputStream.write(Unknown Source)
    at java.io.DataOutputStream.write(Unknown Source)
    at org.apache.commons.httpclient.ChunkedOutputStream.writeClosingChunk(ChunkedOutputStream.java:130)
    at org.apache.commons.httpclient.ChunkedOutputStream.finish(ChunkedOutputStream.java:144)
    at org.mule.transport.http.HttpServerConnection.writeResponse(HttpServerConnection.java:319)
    at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:164)
    at org.mule.work.WorkerContext.run(WorkerContext.java:311)
    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)
ERROR 2012-10-12 13:33:05,602 [[upc].connector.http.mule.default.receiver.02] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Software caused connection abort: socket write error
java.net.SocketException: Software caused connection abort: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(Unknown Source)
    at java.net.SocketOutputStream.write(Unknown Source)
    at java.io.DataOutputStream.write(Unknown Source)
    at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
    at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source)
    at sun.nio.cs.StreamEncoder.implFlush(Unknown Source)
    at sun.nio.cs.StreamEncoder.flush(Unknown Source)
    at java.io.OutputStreamWriter.flush(Unknown Source)
    at java.io.BufferedWriter.flush(Unknown Source)
    at java.io.FilterWriter.flush(Unknown Source)
    at org.mule.transport.http.ResponseWriter.flush(ResponseWriter.java:69)
    at org.mule.transport.http.HttpServerConnection.writeResponse(HttpServerConnection.java:300)
    at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:201)
    at org.mule.work.WorkerContext.run(WorkerContext.java:311)
    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)

1 个答案:

答案 0 :(得分:3)

有几个问题:

  • 远程Web服务的错误地址
  • 缺少cxf:proxy-client元素,
  • 缺少复制SOAPAction(如果不使用SOAP 1.2)。

以下是SOAP 1.1的固定示例。请注意,我已将CXF元素放置在端点内:这不是必需的(它们可以直接在流程中),而只是将它们放置在配置中的常用方法。

<flow name="UPCFlow1">
    <http:inbound-endpoint exchange-pattern="request-response"
        host="localhost" port="4040" path="upc">
        <cxf:proxy-service namespace="http://searchupc.com/"
            service="UPCSearch" payload="body"
            wsdlLocation="http://www.searchupc.com/service/UPCSearch.asmx?WSDL"
            enableMuleSoapHeaders="false" />
    </http:inbound-endpoint>
    <copy-properties propertyName="SOAPAction" />
    <http:outbound-endpoint
        address="http://www.searchupc.com/supc/service/UPCSearch.asmx"
        exchange-pattern="request-response" method="POST">
        <cxf:proxy-client payload="body" />
    </http:outbound-endpoint>
</flow>

对于SOAP 1.2:

<flow name="UPCFlow1">
    <http:inbound-endpoint exchange-pattern="request-response"
        host="localhost" port="4040" path="upc">
        <cxf:proxy-service namespace="http://searchupc.com/"
            service="UPCSearch" payload="body"
            wsdlLocation="http://www.searchupc.com/service/UPCSearch.asmx?WSDL"
            enableMuleSoapHeaders="false" />
    </http:inbound-endpoint>
    <http:outbound-endpoint
        address="http://www.searchupc.com/supc/service/UPCSearch.asmx"
        exchange-pattern="request-response" method="POST">
        <cxf:proxy-client payload="body" soapVersion="1.2" />
    </http:outbound-endpoint>
</flow>
相关问题