您好我正在探索 wsdl-cxf 来使用网络服务......我有以下骡子流: -
<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&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>
从数据库中获取数据并显示结果... 第二个流 inputService 尝试使用 wsdl-cxf 来使用服务...这里我使用 stdio:inbound 来获取输入。现在当我传递数据33作为输入..它无法从数据库中获取值...现在我的Web服务实现类有以下方法: -
public DataResponse retrieveDataOperation(
RetrieveRequest retrieveDataRequest)
{
//All the Logic here
}
其中RetrieveRequest retrieveDataRequest是Object类型作为输入..那么如何使用 wsdl-cxf 传递值,这可能是一个String请求...我的意思是如何使用 wsdl-cxf 使用web服务并传递一个以Object为参数的值...请帮助..
答案 0 :(得分:0)
CXF WSDL提供程序的一个限制是它不允许您使用非Java基元(不是String,int,double等的对象)。
您的网络服务会收到一个retrieveDataRequest
对象,而不是一个简单的类型,因此提供商无法在您的使用案例中使用。