Skip to Content
avatar image
Former Member

Define Webservie in Configuration-Clarification.

Hi,

I have a web-service client to file scenario. The call is async. Is it possible to have async call in this scenario?

I designed following interfaces:

1."studentList_outbound_async" under System_X_DEV (Sender ser vice).

2."customerList_inbound_async" under System_Y_DEV (Receiver Service).

I did the necessary message mapping and interface mapping in the repository.

In the Configuration part, I defined a sender soap adapter under the sender service with the following configuraiton.

1.Default Interface Name :studentList_outbound_async

2.Quality of service: Exactly Once (for asynchronous communication)

Also, at the configuration part, I defined Web Service as :

The URL of Integration Server SOAP inbound channel : http://fcldx101.efi.com:8000/XISOAPAdapter/MessageServlet?channel=: :

Interface in Integration repository : studentList_outbound_async

I specified the sender and the interface.

Am I specifying the parameters correctly?

I created the wsdl with the wizard, and saved to desktop.

I tried to create new soap reque in xml spy, but it prompts to select of soap operation name, but the the choice is empty. Basically, I am unable to create new soap request for the wsdl I created with the help of wizard.When I tried to open the wsdl in a debugger mode, it says "Could not find any porst in the wsdl file".

Can anyone clarify on this topic??

Thanks

Karma

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

7 Answers

  • Best Answer
    avatar image
    Former Member
    Apr 05, 2006 at 05:07 AM

    Hi karma,

    Pls go thru the following threads.

    http://help.sap.com/saphelp_nw04/helpdata/en/69/a6fb3fea9df028e10000000a1550b0/frameset.htm

    soap-client-for-synchronous-scenario

    asynch-webservices-what-does-it-mean

    The inbound address for SOAP messages is: http://host:port/XISOAPAdapter/MessageServlet?channel=:studentList_outbound_async:<senderCommunicationchannel>

    Regards,

    Rakesh.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Apr 05, 2006 at 07:01 PM

    Hi there,

    Thanks for your suggestions. Things are clearer to me about exposing XI design objecst as web-services, but I still cant test using the xml spy. I am having following issues.

    I have configured as follow to expose design objects a web-service:

    1.Inbound SOAP URL: http://fcldx101.efi.com:8000/XISOAPAdapter/MessageServlet?channel=: :

    2.Interface : studentList_outbound_async

    3.Sender Service: System_X_DEV

    4.Sender Interface: studentList_outbound_async

    Does the interface name in step 2 and 4 have to be same in this scenario?What is the difference between these two interfaces?

    This is the WSDL i get:

    -


    ?xml version="1.0" encoding="ISO-8859-1"?>

    http://schemas.xmlsoap.org/wsdl/" xmlns:p1="urn:efi:xi:systemx" name="studentList_outbound_async" targetNamespace="urn:efi:xi:systemx">

    <wsdl:types>

    http://www.w3.org/2001/XMLSchema" xmlns="urn:efi:xi:systemx" targetNamespace="urn:efi:xi:systemx">

    <xsd:element name="studentList" type="studentList_dt" />

    <xsd:complexType name="student_dt">

    <xsd:annotation>

    http://sap.com/xi/TextID">

    a6f76092b9da11da9b5dc4190a0a2b2d

    </xsd:appinfo>

    </xsd:annotation>

    <xsd:sequence>

    <xsd:element name="name" type="xsd:string">

    <xsd:annotation>

    http://sap.com/xi/TextID">

    a6f76090b9da11da9d21c4190a0a2b2d

    </xsd:appinfo>

    </xsd:annotation>

    </xsd:element>

    <xsd:element name="sid" type="xsd:string">

    <xsd:annotation>

    http://sap.com/xi/TextID">

    a6f76091b9da11dacf57c4190a0a2b2d

    </xsd:appinfo>

    </xsd:annotation>

    </xsd:element>

    </xsd:sequence>

    </xsd:complexType>

    <xsd:complexType name="studentList_dt">

    <xsd:annotation>

    http://sap.com/xi/TextID">

    cf165f91b9da11dab038c4190a0a2b2d

    </xsd:appinfo>

    </xsd:annotation>

    <xsd:sequence>

    <xsd:element name="student" type="student_dt" minOccurs="0" maxOccurs="unbounded">

    <xsd:annotation>

    http://sap.com/xi/TextID">

    cf165f90b9da11da8d09c4190a0a2b2d

    </xsd:appinfo>

    </xsd:annotation>

    </xsd:element>

    </xsd:sequence>

    </xsd:complexType>

    </xsd:schema>

    </wsdl:types>

    <wsdl:message name="studentList">

    <wsdl:part name="studentList" element="p1:studentList" />

    </wsdl:message>

    <wsdl:portType name="studentList_outbound_async">

    <wsdl:operation name="studentList_outbound_async">

    <wsdl:input message="p1:studentList" />

    </wsdl:operation>

    </wsdl:portType>

    <wsdl:binding name="studentList_outbound_asyncBinding" type="p1:studentList_outbound_async">

    http://schemas.xmlsoap.org/wsdl/soap/" style="document" transport=" http://schemas.xmlsoap.org/soap/http" />

    <wsdl:operation name="studentList_outbound_async">

    http://schemas.xmlsoap.org/wsdl/soap/" soapAction=" http://sap.com/xi/WebService/soap1.1" />

    <wsdl:input>

    http://schemas.xmlsoap.org/wsdl/soap/" use="literal" />

    </wsdl:input>

    </wsdl:operation>

    </wsdl:binding>

    <wsdl:service name="studentList_outbound_asyncService">

    <wsdl:port name="studentList_outbound_asyncPort" binding="p1:studentList_outbound_asyncBinding">

    http://schemas.xmlsoap.org/wsdl/soap/" location=" http://fcldx101.efi.com:8000/XISOAPAdapter/MessageServlet?channel=:<System_X_DEV>:<SystemX_Sender_Soap_channel>&version=3.0&Sender.Service=System_X_DEV&Interface=urn%3Aefi%3Axi%3Asystemx%5EstudentList_outbound_async" />

    </wsdl:port>

    </wsdl:service>

    </wsdl:definitions>

    -


    I save this in the local machine, opened up IDE XML SPY version 4.3.

    I went to SOAP-->Create new soap request for the wsdl File I created. It promts for "Please select for soap operation name", but the dialog box is empty. Any help on this??

    When I tried to open Soap-->Soap debugger session for the wsdl file, it says "Couldn't find any ports in the WSDL file!". Any help on this again???

    Am I missing something??

    Karma

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi,

      You need to specify the web service action/operation for which the SOAP request needs to generated. In general, a particular web service will have multiple actions eg. calculator has actions viz. add, multiply etc.

      But XI exposed web services will have only one action in it. So, you just need to select the action/operation (click on) 'studentList_outbound_async' on one of the windows. And then click on 'Create SOAP Request'

      praveen

  • avatar image
    Former Member
    Apr 05, 2006 at 09:02 PM

    Hi Praveen,

    Thanks for your information. As I mentioned earlier, I created WSDL through wizard. While testing, I am trying to create a soap request for the WSDL file in XML SPY, but I don't see any option to select soap operaion in the dailog box. Any suggestion on why the soap operation is not shown in the dialog box that prompts to selet the soap operation.

    There is where I am stuck.

    Thanks again.

    Karma

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Apr 05, 2006 at 09:30 PM

    Hi Praveen,

    Yeah, the WSDL is well-formed and valid. I checked it in XML SPY.

    Still the option for soap operation is not shown.

    Thanks a gain.

    Karma

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi Karma,

      I've some problem with my XMLSPY. The WSDL you gave is not validated by my XMLSPY. I had same problem with one of my earlier WSDLs. So, I switched to http://www.oxygenxml.com">OXYGEN XML editor. Your WSDL works perfectly fine and I can generate the SOAP request.

      So, I cant help you on XMLSPY issue 😔

      Try it on OXYGEN.

      praveen

  • avatar image
    Former Member
    Apr 05, 2006 at 11:18 PM

    Hi Praveen,

    Thanks for you help. I guess something is not right with the XML SPY, with Oxygen I could generate a soap request as follow:

    http://schemas.xmlsoap.org/soap/envelope/">

    <SOAP-ENV:Header/>

    <SOAP-ENV:Body>

    <studentList xmlns="urn:efi:xi:systemx">

    <student xmlns="">

    <name>Karma</name>

    <sid>Ghale</sid>

    </student>

    </studentList>

    </SOAP-ENV:Body>

    </SOAP-ENV:Envelope>

    When I send this request, I get an error: "Query string contains invalid character:<"

    I am not sure why? Does anyone know why?

    Thanks again.

    Karma

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi Karma,

      I can see 2 things which are different from one of my earlier WSDLs.

      The port should 5<XX>00, where as XX is the system number. It shud be the J2EE port, not the HTTP port, 8000.

      And the channel shud be ":System_X_DEV:SystemX_Sender_Soap_channel"

      Re-generate the WSDL with the above changes and test it.

      praveen

  • avatar image
    Former Member
    Apr 05, 2006 at 11:43 PM

    I fixed the query error. Now, I am getting the following error:

    org.apache.commons.httpclient.HttpException :

    <?xml version='1.0'?>

    <!-- see the documentation -->

    <SOAP:Body>

    <SOAP:Fault>

    <faultcode>SOAP:Server</faultcode>

    <faultstring>Server Error</faultstring>

    <detail>

    <context>XIAdapter</context>

    <code>ModuleUnknownException</code>

    <text><![CDATA[

    com.sap.aii.af.mp.module.ModuleException: either no channelID specified or no channel found for the specified party, service, and channel name, MessageServlet(Version $Id: //tc/aii/30_VAL_REL/src/_adapters/_soap/java/com/sap/aii/af/mp/soap/web/MessageServlet.java#14 $)

    at com.sap.aii.af.mp.soap.web.MessageServlet.doPost(MessageServlet.java:380)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

    at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)

    at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)

    at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)

    at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)

    at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)

    at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)

    at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)

    at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)

    at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)

    at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)

    at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

    at java.security.AccessController.doPrivileged(Native Method)

    at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)

    at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

    ]]></text>

    </s:SystemError>

    </detail>

    </SOAP:Fault>

    </SOAP:Body>

    </SOAP:Envelope>

    I guess the client is not invoking the right communcation channel. Any suggestions for this kind of error?

    Thanks.

    Karma

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Apr 06, 2006 at 12:31 AM

    Hey Praveen,

    After I changed the port number, and recreated the wsdl. Now, it works. Thanks for your help.

    Karma

    Add comment
    10|10000 characters needed characters exceeded