2

我设置了服务代理,并且可以查看 wsdl,但是当我尝试使用soapUI 对其进行测试时,它几乎似乎超时了。我将发布 mule 配置、soapUI 日志和 mule studio 日志。当我在没有代理的情况下正常访问 wdsl 时,这是一个快速响应。

谷歌结果似乎没有产生太多,所以任何关于来源、soapUI 或 Mule 的指导,以及这个问题都会有所帮助。

骡流

<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)
4

1 回答 1

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>
于 2012-10-12T19:29:51.047 回答