We are calling a thirdparty SOAP service (without WSDL) from a REST service.
We created a intermediate proxy cxf webservice to invoke the final third
party webservice. The JSON request is not getting converted to SOAP
parameters correctly and we getting Exception that "Expecting 3 parameters
but getting 1 , Pls check your data format" .  When we change the SOAP
interface to accept 1 parameter, and remove @Webparam annotation from
interface then it is working fine. How do we correctly map the JSON string
to SOAP request parameters , such that all 3 parameters from JSON string are
correctly mapped. 

*Rest Server config below :
*
        /<cxf:rsServer id="GetCustomerService" address="/getCustomer">
                <cxf:serviceBeans>
                        <bean
                                
class="com.infrasoft.osb.login.serverProxy.GetCustomerProxyServerImpl"
/>
                </cxf:serviceBeans>
                <cxf:providers>
                        <bean 
class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />
                </cxf:providers>

                <cxf:properties>
                        <entry key="dataFormat" value="POJO" />
                </cxf:properties>
        </cxf:rsServer>/


*Proxy webservice to third party service :
*
/       <cxf:cxfEndpoint id="getOSBCustomerClient"  
serviceName="s:GetOSBCustomerService"     
            serviceClass="com.infrasoft.osb.bastion.GetOSBCustomer" 
            wsdlURL="http://localhost:8080/SystemServer/GetOSBCustomer?wsdl";
xmlns:s="http://bastion.osb.infrasoft.com/";>
     <cxf:properties>
      <entry key="dataFormat" value="POJO"/>
     </cxf:properties>
      </cxf:cxfEndpoint>/


*Camel route :
*
/<route id="CustomerRoute">
                        <from uri="cxfrs://bean://GetCustomerService" />
                        <setExchangePattern pattern="InOut" />
                         <camel:bean ref="getMortgageAccountResquestProcessor"
                                method="process" />
                        <setHeader headerName="operationName">
                                <constant>getCustomerDetails</constant>
                        </setHeader>
                        <to uri="cxf:bean:getOSBCustomerClient"/>
                </route>/


JSON message as seen from Request Processor before invoking the proxy :
Exchange[Message: {"customerId":"0000104","systemId":"POR","brandId":"KRS"}]


Web param definition of SOAP service proxy :
        @WebMethod public Customer
getCustomerDetails(@WebParam(name="systemId")String
systemId,@WebParam(name="brandId")String
brandId,@WebParam(name="customerId")String customerId) throws
JsonParseException, JsonMappingException, IOException ;

Pls suggest how to map JSON elements to each web params??





--
View this message in context: 
http://camel.465427.n5.nabble.com/Unable-to-route-Rest-webservice-Json-response-to-SOAP-service-via-camel-route-tp5778525.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to