ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Getting BIP3602E: in WebService Flow

Post new topic  Reply to topic Goto page 1, 2  Next
 Getting BIP3602E: in WebService Flow « View previous topic :: View next topic » 
Author Message
MQMD1
PostPosted: Thu May 30, 2013 12:46 am    Post subject: Getting BIP3602E: in WebService Flow Reply with quote

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 &apos;gen/YBLMessageSetService_MyFlow.Extract&apos;.
The message broker detected an error whilst processing a message in node &apos;gen/YBLMessageSetService_MyFlow.Extract&apos;. 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 &apos;&apos;null&apos;&apos; does not match an operation described by WSDL binding &apos;&apos;YBLMessageSetSOAP_HTTP_Binding&apos;&apos; in file &apos;&apos;YBLMessageSetService.wsdl&apos;&apos;.
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
View user's profile Send private message
Tech1621
PostPosted: Thu May 30, 2013 1:04 am    Post subject: Suggestion Reply with quote

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
View user's profile Send private message
MQMD1
PostPosted: Thu May 30, 2013 3:09 am    Post subject: Reply with quote

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
View user's profile Send private message
Tech1621
PostPosted: Thu May 30, 2013 4:17 am    Post subject: Reply with quote

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
View user's profile Send private message
fjb_saper
PostPosted: Thu May 30, 2013 5:18 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
MQMD1
PostPosted: Thu May 30, 2013 5:19 am    Post subject: Reply with quote

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
View user's profile Send private message
MQMD1
PostPosted: Thu May 30, 2013 5:21 am    Post subject: Reply with quote

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
View user's profile Send private message
MQMD1
PostPosted: Thu May 30, 2013 5:24 am    Post subject: Reply with quote

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
View user's profile Send private message
fjb_saper
PostPosted: Thu May 30, 2013 5:26 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
Tech1621
PostPosted: Thu May 30, 2013 5:32 am    Post subject: Reply with quote

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
View user's profile Send private message
MQMD1
PostPosted: Thu May 30, 2013 5:40 am    Post subject: Reply with quote

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
View user's profile Send private message
MQMD1
PostPosted: Thu May 30, 2013 5:42 am    Post subject: Reply with quote

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
View user's profile Send private message
fjb_saper
PostPosted: Thu May 30, 2013 5:49 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
Tech1621
PostPosted: Thu May 30, 2013 5:54 am    Post subject: Reply with quote

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
View user's profile Send private message
MQMD1
PostPosted: Thu May 30, 2013 6:26 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2  Next Page 1 of 2

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Getting BIP3602E: in WebService Flow
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.