Author |
Message
|
MQMD1 |
Posted: Thu May 30, 2013 12:46 am Post subject: Getting BIP3602E: in WebService Flow |
|
|
Novice
Joined: 06 May 2013 Posts: 20
|
I have to create a WebService Gateway Flow for a Customer who has provided request , response and error XML files.
I first generated XSD for these XML files by using the Message Model Toolkit . However the generated XSD declared all elements as global and I found they were not usable for generating the WSDL file through Message Set ( the only way i know to generate the WSDL for existing XSD's ). So I used an online converter to generate the XSD and successfuly created message set and WSDL out of them. I used the " Start from WSDL and XSD files " wizard in the toolkit to get my Message models created . I drag the WSDL to configure SOAPInput node and wired it to SOAPReply node. To test the flow I manualy created the SOAP message by wrapping it in a SOAP header. Below are the artifacts which might help in getting the insight I am failing at.
SOAP Input Message ( Created Manualy )
Code: |
<?xml version="1.0" encoding="UTF-8"?><tns0:Envelope xmlns:tns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><tns0:Header/><tns0:Body><input Service="YesDemandDepositManagerService" Operation="inquireCustomerAccount( SessionContext, String)">
<SessionContext>
<SupervisorContext>
<PrimaryPassword />
<UserId />
</SupervisorContext>
<BankCode>12</BankCode>
<Channel>res</Channel>
<ExternalBatchNumber />
<ExternalReferenceNo />
<ExternalSystemAuditTrailNumber />
<LocalDateTimeText />
<OriginalReferenceNo />
<OverridenWarnings />
<PostingDateText />
<ServiceCode />
<SessionTicket />
<TransactionBranch>912</TransactionBranch>
<UserId>dfcdf</UserId>
<ValueDateText />
</SessionContext>
<CustomerId>16</CustomerId>
<PageNumber />
<TotalRecordPage />
<ExtUniqueRefId />
</input></tns0:Body></tns0:Envelope> |
WSDL file generated ( From Message Sets )
Code: |
<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions name="ABCMessageSet" targetNamespace="http://tempuri.org/ABCMessageSet" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://tempuri.org/ABCMessageSet" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/ABCMessageSet" xmlns:mrm="http://tempuri.org/ABCMessageSet">
<xsd:include schemaLocation="ErrMsg.xsd"/>
<xsd:include schemaLocation="ABCCustomerListResponse.xsd"/>
<xsd:include schemaLocation="ABCCustomerListRequest.xsd"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="ABCCustomerListOp_in">
<wsdl:part element="tns:input" name="input"/>
</wsdl:message>
<wsdl:message name="ABCCustomerListOp_out">
<wsdl:part element="tns:Response" name="Response"/>
</wsdl:message>
<wsdl:message name="ABCCustomerListOp_fault1">
<wsdl:part element="tns:Exception" name="Exception"/>
</wsdl:message>
<wsdl:portType name="ABCMessageSetPortType">
<wsdl:operation name="ABCCustomerListOp">
<wsdl:input message="tns:ABCCustomerListOp_in" name="ABCCustomerListOp_Input"/>
<wsdl:output message="tns:ABCCustomerListOp_out" name="ABCCustomerListOp_Output"/>
<wsdl:fault message="tns:ABCCustomerListOp_fault1" name="ABCCustomerListOp_Fault"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ABCMessageSetSOAP_HTTP_Binding" type="tns:ABCMessageSetPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="ABCCustomerListOp">
<soap:operation soapAction="ABCCustomerListOp"/>
<wsdl:input name="ABCCustomerListOp_Input">
<soap:body parts="input" use="literal"/>
</wsdl:input>
<wsdl:output name="ABCCustomerListOp_Output">
<soap:body parts="Response" use="literal"/>
</wsdl:output>
<wsdl:fault name="ABCCustomerListOp_Fault">
<soap:fault name="ABCCustomerListOp_Fault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ABCMessageSetSOAP_HTTP_Service">
<wsdl:port binding="tns:ABCMessageSetSOAP_HTTP_Binding" name="ABCMessageSetSOAP_HTTP_Port">
<soap:address location="http://localhost:7800/ABCMessageSetSOAP_HTTP_Service"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions> |
Request Schema ( XSD )
Code: |
<?xml version="1.0" encoding="UTF-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="input" type="_input">
</xs:element>
<xs:complexType name="_input">
<xs:sequence>
<xs:element name="SessionContext">
<xs:complexType>
<xs:sequence>
<xs:element name="SupervisorContext">
<xs:complexType>
<xs:sequence>
<xs:element name="PrimaryPassword" type="xs:string"/>
<xs:element name="UserId" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="BankCode" type="xs:byte"/>
<xs:element name="Channel" type="xs:string"/>
<xs:element name="ExternalBatchNumber" type="xs:string"/>
<xs:element name="ExternalReferenceNo" type="xs:string"/>
<xs:element name="ExternalSystemAuditTrailNumber" type="xs:string"/>
<xs:element name="LocalDateTimeText" type="xs:string"/>
<xs:element name="OriginalReferenceNo" type="xs:string"/>
<xs:element name="OverridenWarnings" type="xs:string"/>
<xs:element name="PostingDateText" type="xs:string"/>
<xs:element name="ServiceCode" type="xs:string"/>
<xs:element name="SessionTicket" type="xs:string"/>
<xs:element name="TransactionBranch" type="xs:short"/>
<xs:element name="UserId" type="xs:string"/>
<xs:element name="ValueDateText" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CustomerId" type="xs:byte"/>
<xs:element name="PageNumber" type="xs:string"/>
<xs:element name="TotalRecordPage" type="xs:string"/>
<xs:element name="ExtUniqueRefId" type="xs:string"/>
</xs:sequence>
<xs:attribute name="Service" type="xs:string"/>
<xs:attribute name="Operation" type="xs:string"/>
</xs:complexType>
</xs:schema> |
However , now I am struck with the below exception . Any clue to work on it would be of great help.
Quote: |
BIP2230E: Error detected whilst processing a message in node 'gen/YBLMessageSetService_MyFlow.Extract'.
The message broker detected an error whilst processing a message in node 'gen/YBLMessageSetService_MyFlow.Extract'. An exception has been thrown to cut short the processing of the message.
See the following messages for details of the error. : F:\build\slot1\S800_P\src\DataFlowEngine\PluginInterface\ImbJniNode.cpp: 1260: ImbJniNode::evaluate: ComIbmSOAPExtractNode: MyFlow#FCMComposite_1_2.gen/YBLMessageSetService_MyFlow#FCMComposite_1_1
BIP3614E: A SOAP logical tree cannot be built from the message bitstream.
The bitstream is not a valid Web service message.
Review further error messages for an indication to the cause of the error. : F:\build\slot1\S800_P\src\WebServices\WSLibrary\ImbSOAPParser.cpp: 2062: ImbSOAPParser::createSoapShapedTree: :
BIP3602E: The Web service payload ''null'' does not match an operation described by WSDL binding ''YBLMessageSetSOAP_HTTP_Binding'' in file ''YBLMessageSetService.wsdl''.
The first child of the SOAP Body does not correspond to any of the operations defined in the specified WSDL definition.
Check that the correct WSDL definition was deployed. : F:\build\slot1\S800_P\src\WebServices\WSLibrary\ImbSOAPParser.cpp: 1785: ImbSOAPParser::createSoapShapedTree: : |
[/code] |
|
Back to top |
|
 |
Tech1621 |
Posted: Thu May 30, 2013 1:04 am Post subject: Suggestion |
|
|
Novice
Joined: 29 May 2013 Posts: 23
|
Hi
By looking at the request XML and your WSDL
I think you are missing out the name space in XML.
How ever , try importing the WSDL file to soap UI and then just generate a sample request, use that soap envelop and for rest of body, u can generate a XML from XSD using the toolkit itself..
And then try hitting the endpoint using the new request you have created just now.. _________________ Anything is easy if you believe in yourself.. |
|
Back to top |
|
 |
MQMD1 |
Posted: Thu May 30, 2013 3:09 am Post subject: |
|
|
Novice
Joined: 06 May 2013 Posts: 20
|
I have generated the SOAP header from WMB Test Client which runs over the SOAPInput node so logicaly it should have covered most of the SOAP tns.I tried generating the SOAP header from the SOAPUI but could't So still relying over the one I generated from WMB Test Client. For the request XML i have generated the one from the XSD and the new SOAP Request now is as below . However , it also is throwing the same exception
Code: |
<?xml version="1.0" encoding="UTF-8"?><tns0:Envelope xmlns:tns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><tns0:Header/><tns0:Body xmlns:xsd="http://tempuri.org/ABCMessageSet"><input xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CASACustomerListRequest.xsd">
<SessionContext>
<SupervisorContext>
<PrimaryPassword>PrimaryPassword</PrimaryPassword>
<UserId>UserId</UserId>
</SupervisorContext>
<BankCode>0</BankCode>
<Channel>Channel</Channel>
<ExternalBatchNumber>ExternalBatchNumber</ExternalBatchNumber>
<ExternalReferenceNo>ExternalReferenceNo</ExternalReferenceNo>
<ExternalSystemAuditTrailNumber>ExternalSystemAuditTrailNumber</ExternalSystemAuditTrailNumber>
<LocalDateTimeText>LocalDateTimeText</LocalDateTimeText>
<OriginalReferenceNo>OriginalReferenceNo</OriginalReferenceNo>
<OverridenWarnings>OverridenWarnings</OverridenWarnings>
<PostingDateText>PostingDateText</PostingDateText>
<ServiceCode>ServiceCode</ServiceCode>
<SessionTicket>SessionTicket</SessionTicket>
<TransactionBranch>0</TransactionBranch>
<UserId>UserId</UserId>
<ValueDateText>ValueDateText</ValueDateText>
</SessionContext>
<CustomerId>0</CustomerId>
<PageNumber>PageNumber</PageNumber>
<TotalRecordPage>TotalRecordPage</TotalRecordPage>
<ExtUniqueRefId>ExtUniqueRefId</ExtUniqueRefId>
</input></tns0:Body></tns0:Envelope> |
|
|
Back to top |
|
 |
Tech1621 |
Posted: Thu May 30, 2013 4:17 am Post subject: |
|
|
Novice
Joined: 29 May 2013 Posts: 23
|
MQMD1 wrote: |
I have generated the SOAP header from WMB Test Client which runs over the SOAPInput node so logicaly it should have covered most of the SOAP tns.I tried generating the SOAP header from the SOAPUI but could't ....[/code] |
There is a very simple test to check the WSDL and that is importing to SOAP UI, if u have a deploy-able WSDL which is error free then it will easily gets imported to SOAP UI ..
And in your case if you are not able to import it into SOAP UI then it seems something is wrong with your WSDL itself..
1) either there is an error in WSDL
2) or it is not deploy-able WSDL |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu May 30, 2013 5:18 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Quote: |
The first child of the SOAP Body does not correspond to any of the operations defined in the specified WSDL definition. |
So you are passing an invalid SOAP message to the node.
Or the operation you are using has not been defined to the node/wsdl...
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
MQMD1 |
Posted: Thu May 30, 2013 5:19 am Post subject: |
|
|
Novice
Joined: 06 May 2013 Posts: 20
|
I have got the SOAP Request XML created rom the SOAP UI below is the generated SOAP UI
Code: |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ybl="http://tempuri.org/YBLMessageSet">
<soapenv:Header/>
<soapenv:Body>
<ybl:input Service="?" Operation="?">
<ybl:SessionContext>
<ybl:SupervisorContext>
<ybl:PrimaryPassword>?</ybl:PrimaryPassword>
<ybl:UserId>?</ybl:UserId>
</ybl:SupervisorContext>
<ybl:BankCode>?</ybl:BankCode>
<ybl:Channel>?</ybl:Channel>
<ybl:ExternalBatchNumber>?</ybl:ExternalBatchNumber>
<ybl:ExternalReferenceNo>?</ybl:ExternalReferenceNo>
<ybl:ExternalSystemAuditTrailNumber>?</ybl:ExternalSystemAuditTrailNumber>
<ybl:LocalDateTimeText>?</ybl:LocalDateTimeText>
<ybl:OriginalReferenceNo>?</ybl:OriginalReferenceNo>
<ybl:OverridenWarnings>?</ybl:OverridenWarnings>
<ybl:PostingDateText>?</ybl:PostingDateText>
<ybl:ServiceCode>?</ybl:ServiceCode>
<ybl:SessionTicket>?</ybl:SessionTicket>
<ybl:TransactionBranch>?</ybl:TransactionBranch>
<ybl:UserId>?</ybl:UserId>
<ybl:ValueDateText>?</ybl:ValueDateText>
</ybl:SessionContext>
<ybl:CustomerId>?</ybl:CustomerId>
<ybl:PageNumber>?</ybl:PageNumber>
<ybl:TotalRecordPage>?</ybl:TotalRecordPage>
<ybl:ExtUniqueRefId>?</ybl:ExtUniqueRefId>
</ybl:input>
</soapenv:Body>
</soapenv:Envelope> |
Since now the input XML and WSDL must be in synch. We have the WSDL and XSD and XML ( i am sending with after removing ? with abc and 123 ) . What could have triggered this issue now.
Code: |
BIP3602E: The Web service payload ''{http://tempuri.org/YBLMessageSet}input'' does not match an operation described by WSDL binding ''YBLMessageSetSOAP_HTTP_Binding'' in file ''YBLMessageSetService.wsdl''.
The first child of the SOAP Body does not correspond to any of the operations defined in the specified WSDL definition.
Check that the correct WSDL definition was deployed. : F:\build\slot1\S800_P\src\WebServices\WSLibrary\ImbSOAPParser.cpp: 722: ImbSOAPParser::refreshBitStreamFromElementsInner: : </Text></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope> |
|
|
Back to top |
|
 |
MQMD1 |
Posted: Thu May 30, 2013 5:21 am Post subject: |
|
|
Novice
Joined: 06 May 2013 Posts: 20
|
Quote: |
operation you are using has not been defined |
It would help if you can elaborate on this as it is closer to the error code also.
Last edited by MQMD1 on Thu May 30, 2013 5:26 am; edited 1 time in total |
|
Back to top |
|
 |
MQMD1 |
Posted: Thu May 30, 2013 5:24 am Post subject: |
|
|
Novice
Joined: 06 May 2013 Posts: 20
|
Is there any other way ( other than from message set ) to generate WSDL , I have request and response xml message to start with. |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu May 30, 2013 5:26 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Usually I define the xsds and wsdl in the toolkit (extra folder ex imports). I then make sure to generate (option replace) the bindings in the wsdl. I then import the wsdl into the message set (make it deployable).
This should ensure that you have the correct bindings. This will also generate the correct SOAP message in SOAPUI.
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
Tech1621 |
Posted: Thu May 30, 2013 5:32 am Post subject: |
|
|
Novice
Joined: 29 May 2013 Posts: 23
|
MQMD1 wrote: |
Is there any other way ( other than from message set ) to generate WSDL , I have request and response xml message to start with. |
ou can use Altova XML spy to create the WSDL if you have the software _________________ Anything is easy if you believe in yourself.. |
|
Back to top |
|
 |
MQMD1 |
Posted: Thu May 30, 2013 5:40 am Post subject: |
|
|
Novice
Joined: 06 May 2013 Posts: 20
|
@ Tech1621 ...I would give a try , but I would like to stick to the toolkit. |
|
Back to top |
|
 |
MQMD1 |
Posted: Thu May 30, 2013 5:42 am Post subject: |
|
|
Novice
Joined: 06 May 2013 Posts: 20
|
@fjb_saper
how do you link your XSD to your WSDL that is the challenge I am facing in toolkit and have to go for category file based method. |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu May 30, 2013 5:49 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
MQMD1 wrote: |
@fjb_saper
how do you link your XSD to your WSDL that is the challenge I am facing in toolkit and have to go for category file based method. |
Completely outside of the message set. You may have to check xml development and webservices in the preferences. (I use the import folder in the message set as a convenient location. At this point the message set has no knowledge of the xsd or wsdl.
you create the xsds, create the wsdl (wizard is a good guide).
Set up operations and set up input and output messages.
Generate the wsdl bindings.
Verify the wsdl. Import the wsdl into the message set. _________________ MQ & Broker admin |
|
Back to top |
|
 |
Tech1621 |
Posted: Thu May 30, 2013 5:54 am Post subject: |
|
|
Novice
Joined: 29 May 2013 Posts: 23
|
MQMD1 wrote: |
@fjb_saper
how do you link your XSD to your WSDL that is the challenge I am facing in toolkit and have to go for category file based method. |
Follow these steps:
1) Create a WSDL file with any name
2) Open your WSDL and on design Tab click on the input or output arrow
it will take you to Inline schema and in that go to design tab
3)in directives box right click and Add include
4)now click on added field and now in its property import the XSD
5) now in input type or output type add your type (XSD one) _________________ Anything is easy if you believe in yourself.. |
|
Back to top |
|
 |
MQMD1 |
Posted: Thu May 30, 2013 6:26 am Post subject: |
|
|
Novice
Joined: 06 May 2013 Posts: 20
|
I have got the Schema added and but now facing challnege in mapping them to Complex type via Add Element Ref !
It is always pointing to the first XSD...do we have any manual where the steps are documented.. |
|
Back to top |
|
 |
|