SOAPProxy unable to identify the right soapaction/binding
udaypal.aarkoti May 3, 2010 7:33 PMBackground:
I am trying to integrate JBoss SOA-P with DSP. In my implementation SOA-P is consuming a web service exposed by DSP. The WSDL of the Web Service and a sample request are attached.
Problem:
{code:xml} <portType name="Customers"> <operation name="getCustomers"> <input message="tns:Customers_getCustomers_CustomerID" /> <output message="tns:Customers_getCustomers_Customers" /> </operation> </portType>{code}
The operations input message is of type "tns:Customers_getCustomers_CustomerID" and the same is defined as
{code:xml}<message name="Customers_getCustomers_CustomerID"> <documentation>Input message for operation Customers/getCustomers.</documentation> <part name="Customers_getCustomers_CustomerID" element="schema1:CustomerID" /> </message>{code}
As you can see the message part's element attribute points to "schema1:CustomerID". So the incoming message is of the format
{code:xml}<soapenv:Envelope xmlns:inp="http://metamatrix.com/customerholdings/input" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken wsu:Id="UsernameToken-2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:Username>MetaMatrixWSDLUser</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">mm</wsse:Password> <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">vhurTjtnyXosYrTCTdM7aQ==</wsse:Nonce> <wsu:Created>2010-04-27T21:56:25.816Z</wsu:Created> </wsse:UsernameToken> </wsse:Security> </soapenv:Header> <soapenv:Body> <inp:CustomerID>CST01008</inp:CustomerID> </soapenv:Body> </soapenv:Envelope>{code}
Now the actual issue
SOAPProxy for the attached WSDL creates the following operation_to_binding map
{code}{{http://com.metamatrix/MMFinancials_VDB}getaccount={http://com.metamatrix/MMFinancials_VDB}AllCustomerAccounts_account, {http://com.metamatrix/MMFinancials_VDB}getcustomer={http://com.metamatrix/MMFinancials_VDB}AllCustomerAccounts_customer, {http://com.metamatrix/MMFinancials_VDB}getCustomers={http://com.metamatrix/MMFinancials_VDB}Customers, {http://com.metamatrix/MMFinancials_VDB}getaccountholdings={http://com.metamatrix/MMFinancials_VDB}AllCustomerAccounts_accountholdings}{code}
and the soapaction_to_binding map is (this is only for reference and is not relevant for this issue)
{code}{"mm:&ServerURL=mm://localhost:31000&VDBName=MMFinancials_VDB&VDBVersion=1&procedure=AllCustomerAccounts_WS.AllCustomerAccounts_accountholdings.getaccountholdings"={http://com.metamatrix/MMFinancials_VDB}AllCustomerAccounts_accountholdings, "mm:&ServerURL=mm://localhost:31000&VDBName=MMFinancials_VDB&VDBVersion=1&procedure=Customers_WS.Customers.getCustomers"={http://com.metamatrix/MMFinancials_VDB}Customers, "mm:&ServerURL=mm://localhost:31000&VDBName=MMFinancials_VDB&VDBVersion=1&procedure=AllCustomerAccounts_WS.AllCustomerAccounts_customer.getcustomer"={http://com.metamatrix/MMFinancials_VDB}AllCustomerAccounts_customer, "mm:&ServerURL=mm://localhost:31000&VDBName=MMFinancials_VDB&VDBVersion=1&procedure=AllCustomerAccounts_WS.AllCustomerAccounts_account.getaccount"={http://com.metamatrix/MMFinancials_VDB}AllCustomerAccounts_account}{code}
but when I send the request I posted above its actually looking for the operation
{code}{http://metamatrix.com/customerholdings/input}CustomerID{code}
which obviously is not there in the operation_to_binding map.
I am not a WSDL expert so I am not really sure if the WSDL is incorrect or SOAPProxy did not cover the use case presented in this WSDL?
-
MMFinan_getcustomers.xml 1.0 KB
-
MyFinan.xml 8.5 KB