2

サービス プロキシをセットアップして、wsdl を表示できますが、soapUI を使用してテストしようとすると、ほとんどタイムアウトするようです。Mule の構成と、soapUI のログと Mule Studio のログの両方を投稿します。プロキシなしで普通にwdslを打つとレスポンスが早いです。

Google の結果はあまり生成されないようです。そのため、ソース、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)

エクリプス コンソール

    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 に答える