0

こんにちは、Web サービスを使用するためにwsdl-cxfを調べていました...次の Mule フローがあります:-

<stdio:connector name="stdioConnector" promptMessage="Enter Value :" doc:name="STDIO"/>

<flow name="ServiceFlow" doc:name="ServiceFlow">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" path="mainData" doc:name="HTTP"/>
<cxf:jaxws-service  serviceClass="com.test.services.schema.maindata.v1.MainData"  doc:name="SOAP"/>
<component class="com.test.services.schema.maindata.v1.Impl.MainDataImpl" doc:name="JavaMain_ServiceImpl"/>
</flow>

<flow name="inputService" doc:name="inputService" >
<stdio:inbound-endpoint system="IN" doc:name="STDIO"/>
<logger message="Payyyload : #[message.payload]" level="INFO" doc:name="Logger"/>
<outbound-endpoint address="wsdl-cxf:http://localhost:8082/mainData?WSDL&amp;method=retrieveDataOperation" doc:name="Generic"/>
<stdio:outbound-endpoint system="OUT" doc:name="STDIO"/>
<mulexml:object-to-xml-transformer doc:name="Object to XML"/>
</flow> 

最初のフロー ServiceFlow は公開された Web サービスであり、次の入力が SOAPUI から与えられたときに完全に動作します:-

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://services.test.com/schema/MainData/V1">
   <soapenv:Header/>
   <soapenv:Body>
      <v1:retrieveDataRequest>
         <v1:Id>33</v1:Id>
      </v1:retrieveDataRequest>
   </soapenv:Body>
</soapenv:Envelope>

DB からデータをフェッチし、結果を表示します... 2 番目のフローinputServiceは、 wsdl-cxfを使用してサービスを消費しようとします... ここでは、入力を取得するためにstdio:inboundを使用しました.. Data 33 を入力として渡すと、 .. DB から値を取得できません ... 現在、私の Web サービス実装クラスには次のメソッドがあります:-

public DataResponse retrieveDataOperation(
            RetrieveRequest retrieveDataRequest)
{
//All the Logic here 
}

ここで、RetrieveRequest retrieveDataRequest は入力としてのオブジェクト タイプです。では、ここでwsdl-cxf使用して値を渡すにはどうすればよいですか。オブジェクトをパラメーターとして取っている値...助けてください..

4

1 に答える 1

0

ドキュメントから:

CXF WSDL プロバイダーの 1 つの制限は、Java 以外のプリミティブ (String、int、double などではないオブジェクト) を使用できないことです。

Web サービスはretrieveDataRequest単純型ではなくオブジェクトを受け取るため、このユース ケースではプロバイダーを使用できません。

于 2014-08-19T18:17:42.277 に答える