10g: Invoking a web service asynchronously from BPEL

Hello,
I am trying to figure out a good, generic method for making a previously synchronous web service asynchronous and changing the way in which it is invoked from BPEL. I am using SOA Suite 10g (10.1.3.5)
As I understand, one possible method to achieve this is to use IDeliveryService.post() to deliver the web service's response to the BPEL process. For this route, the standard practice of correlation seems to be to supply a correlation Id when invoking the web service and returning the same correlation id as a part of the web service's response message. However, I want to avoid this since it would mean that all response messages from the web service (10+) would have to be modified to include a correlationId, which is problematic in the special case of this web service. Including a correlationId in the request message is possible, however.
I have tried the approach of using the conversation Id directly instead of the correlation Id, by reading the value of ora:getConversationId(), passing this to the web service and setting the property CONVERSATION_ID of the response NormalizedMessage to the same value when returning. However, I cannot seem to get this approach right. Is this possible at all?
An alternative might be to use WS-Addressing, but I do not know if I can make the web service support this - it is written using the EJB WebService-Annotations feature and runs on OC4J as well.
Do you have any suggestions on how this problem could be resolved?
Edited by: 901765 on 12.12.2011 06:01

I have found the following tutorial that implements something similiar to what I am trying to do: http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/odi/10g/10135/odiscenario_bpelcallback/odiscenario_bpelcallback.htm#t3
Because of this, I am now confident that the conversation IDs can be used to achieve correlation. I have implemented the pattern by performing
an invoke activity on the web service, passing the result of ora:getConversationId() as part of the message. The conversation Id returned is of UUID-Form.
After the invoke activity, I have added a pick activity to receive the response message supplied by the web service through IDeliveryService.post(...). I can see that the message is received correctly by loooking at the contents of DLV_MESSAGE. However, the pick activity times out every time (after 10m). Looking at DLV_SUBSCRIPTION reveals that the conversation_id for the pick/receive activity is set to a value of the form bpel://localhost/default/MyBpelProcessName~1.0/7610001-BpInv0-BpSeq2.7-2. As far as I know, this should instead be set to the UUID that ora:getConversationId() returned before performing the invoke activity. What is going wrong here?
Thanks for your help!

Similar Messages

  • Invoking a web service asynchronously

    We can not invoke a web service asynchronously from a standalone java client and a client web service is needed for that.I am not clear why is it so??plz tell me.

    you can write an asynchronous client with JAXWS Dispatch. There are two styles: Polling and callback.

  • How to invoke a web service asynchronously using ws-addressing model?

    Hi Gurus,
    We are invoking an external web service asynchronously using Oracle Work Flow Business events using the following mechanism -
    1)Created a web service invoker event to invoke the web service.
    2)Created a subscription that invokes the web service (provided the wsdl address, operation info).
    3)Defined a subscription parameter WFBES_CALLBACK_EVENT with value pointing to a recieve event.
    4)Created a receive event(parameter value for WFBES_CALLBACK_EVENT) and a subscription that directs the response to a custom PL/SQL function to process response.
    so far so good. We were able to invoke the web service and get and process the response.
    Problem: The external web service can take upto 10 hrs to process the request. A time out of 2 hrs is set on the server hosting the external web service. So when the external web service takes more than 2 hrs to process the request and it times out and we get the following error on EBS side -
    'l_error_message:oracle.apps.fnd.wf.bes.InvokerException: HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: oracle.j2ee.ws.saaj.ContentTypeException: Not a valid SOAP Content-Type: text/html; charset=iso-8859-1'
    Now the external web service providers are suggesting that we are not calling their web service asynchronously and we should use ws-addressing model to do so.
    Is there a way to invoke this web service using ws-addressing model using business events or from PL/SQL or OA middle-tier?
    Regards,
    Sunil
    CMRO Development.
    I am providing here the WSDL of the external web service -
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions targetNamespace="http://service.sdk.webservices.enigma.com" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:ax21="http://service.sdk.webservices.enigma.com/xsd" xmlns:ns="http://service.sdk.webservices.enigma.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:types>
    <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://service.sdk.webservices.enigma.com/xsd" xmlns:ax22="http://service.sdk.webservices.enigma.com">
    <xs:import namespace="http://service.sdk.webservices.enigma.com"/>
    <xs:complexType name="JCGWebServicesException">
    <xs:complexContent>
    <xs:extension base="ax22:Exception">
    <xs:sequence>
    <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:extension>
    </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="JCGServiceReply">
    <xs:sequence>
    <xs:element maxOccurs="unbounded" minOccurs="0" name="pdfStatus" nillable="true" type="ax21:PdfStatus"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="PdfStatus">
    <xs:sequence>
    <xs:element minOccurs="0" name="jobCardID" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="pdfPath" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="status" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    </xs:schema>
    <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://service.sdk.webservices.enigma.com" xmlns:ax23="http://service.sdk.webservices.enigma.com/xsd">
    <xs:import namespace="http://service.sdk.webservices.enigma.com/xsd"/>
    <xs:complexType name="Exception">
    <xs:sequence>
    <xs:element minOccurs="0" name="Exception" nillable="true" type="xs:anyType"/>
    </xs:sequence>
    </xs:complexType>
    <xs:element name="JCGWebServicesException">
    <xs:complexType>
    <xs:sequence>
    <xs:element minOccurs="0" name="JCGWebServicesException" nillable="true" type="ax21:JCGWebServicesException"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:element name="runJobCard">
    <xs:complexType>
    <xs:sequence>
    <xs:element minOccurs="0" name="a_WorkpackageFilePath" nillable="true" type="xs:string"/>
    <xs:element minOccurs="0" name="a_userName" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:element name="runJobCardResponse">
    <xs:complexType>
    <xs:sequence>
    <xs:element minOccurs="0" name="return" nillable="true" type="ax21:JCGServiceReply"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:schema>
    </wsdl:types>
    <wsdl:message name="JCGWebServicesException">
    <wsdl:part name="parameters" element="ns:JCGWebServicesException">
    </wsdl:part>
    </wsdl:message>
    <wsdl:message name="runJobCardResponse">
    <wsdl:part name="parameters" element="ns:runJobCardResponse">
    </wsdl:part>
    </wsdl:message>
    <wsdl:message name="runJobCardRequest">
    <wsdl:part name="parameters" element="ns:runJobCard">
    </wsdl:part>
    </wsdl:message>
    <wsdl:portType name="JCGServicePortType">
    <wsdl:operation name="runJobCard">
    <wsdl:input message="ns:runJobCardRequest" wsaw:Action="urn:runJobCard">
    </wsdl:input>
    <wsdl:output message="ns:runJobCardResponse" wsaw:Action="urn:runJobCardResponse">
    </wsdl:output>
    <wsdl:fault name="JCGWebServicesException" message="ns:JCGWebServicesException" wsaw:Action="urn:runJobCardJCGWebServicesException">
    </wsdl:fault>
    </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="JCGServiceSoap11Binding" type="ns:JCGServicePortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="runJobCard">
    <soap:operation soapAction="urn:runJobCard" style="document"/>
    <wsdl:input>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    <wsdl:fault name="JCGWebServicesException">
    <soap:fault name="JCGWebServicesException" use="literal"/>
    </wsdl:fault>
    </wsdl:operation>
    </wsdl:binding>
    <wsdl:binding name="JCGServiceSoap12Binding" type="ns:JCGServicePortType">
    <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="runJobCard">
    <soap12:operation soapAction="urn:runJobCard" style="document"/>
    <wsdl:input>
    <soap12:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap12:body use="literal"/>
    </wsdl:output>
    <wsdl:fault name="JCGWebServicesException">
    <soap12:fault name="JCGWebServicesException" use="literal"/>
    </wsdl:fault>
    </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="JCGService">
    <wsdl:port name="JCGServiceHttpSoap12Endpoint" binding="ns:JCGServiceSoap12Binding">
    <soap12:address location="http://localhost:8080/JCG/services/JCGService"/>
    </wsdl:port>
    <wsdl:port name="JCGServiceHttpSoap11Endpoint" binding="ns:JCGServiceSoap11Binding">
    <soap:address location="http://localhost:8080/JCG/services/JCGService"/>
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>
    Edited by: sikumar on Jun 22, 2010 1:50 PM

    Bharat,
    You dont need a Business Event setup to invoke a BPEL process from PL/SQL unless you have a special case and you need to process the response from the BPEL process in a separate thread (or in background)..
    For a straight call to BPEL process from PL/SQL, here is a sample script -
    function "MYTEST0" return varchar2 AS
    soap_request varchar2(30000);
    soap_respond varchar2(30000);
    http_req utl_http.req;
    http_resp utl_http.resp;
    resp XMLType;
    i integer;
    helpStr varchar2(30000);
    BEGIN
    soap_request:= '<?xml version = ''1.0'' encoding = ''UTF-8''?>
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ns0="
    http://xmlns.oracle.com/TestWS">
    <env:Body>
    <ns0:TestWSProcessRequest>
    <ns0:input>abc</ns0:input>
    </ns0:TestWSProcessRequest>
    </env:Body>
    </env:Envelope>
    /* the BPEL process name is TestWS */
    http_req:= utl_http.begin_request
    ( 'http://hostname:7777/orabpel/default/TestWS/1.0'
    , 'POST'
    , 'HTTP/1.1'
    utl_http.set_header(http_req, 'Content-Type', 'text/xml');
    utl_http.set_header(http_req, 'Content-Length', length(soap_request));
    utl_http.set_header(http_req, 'SOAPAction', 'process');
    utl_http.write_text(http_req, soap_request);
    http_resp:= utl_http.get_response(http_req);
    utl_http.read_text(http_resp, soap_respond);
    utl_http.end_response(http_resp);
    resp:= XMLType.createXML(soap_respond);
    resp:= resp.extract('/soap:Envelope/soap:Body/child::node()',
    'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');
    helpStr := '';
    i:=0;
    loop
    helpStr := helpStr || substr(soap_respond,1+ i*255,250);
    i:= i+1;
    if i*250> length(soap_respond)
    then
    exit;
    end if;
    end loop;
    return helpStr;
    END;

  • Suggestions for Chunking Large Outbound Web Service Messages from BPEL

    We have a problem today when Oracle EBS sends a large amount of data to BPEL, BPEL processes that data and then attempts to pass that data as a web service via a partner link to the PeopleSoft integration broker. When the message is too large ( > 10,000 records or so) we are hitting some issues on the PeopleSoft web server side being unable to receive that large of a message.
    "allocLargeObjectOrArray - Object size: 32768016, Num elements: 8192000"
    We are considering adjusting the BPEL program to chunk the outbound data being sent to PeopleSoft. The idea would be to use some type of loop and just break after so many lines, transmit the current message and then start a new message.
    The PeopleSoft integration broker has a setting, for outbound type integrations, that can enable an automated chunking feature called ‘Max App Message Size’. I was wondering, does BPEL have a similar configuration setting that might provide this feature? I’m dreaming up that this could be a property of the partner link object that could allow you to specify a certain ‘max size’ and then it would just know to start a new message at that threshold. That might avoid us having to make any additional BPEL code changes at this point.
    Currently using version 11.1.1.1.
    Any advice, much appreciated.
    Regards,
    Ken

    I have found the following tutorial that implements something similiar to what I am trying to do: http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/odi/10g/10135/odiscenario_bpelcallback/odiscenario_bpelcallback.htm#t3
    Because of this, I am now confident that the conversation IDs can be used to achieve correlation. I have implemented the pattern by performing
    an invoke activity on the web service, passing the result of ora:getConversationId() as part of the message. The conversation Id returned is of UUID-Form.
    After the invoke activity, I have added a pick activity to receive the response message supplied by the web service through IDeliveryService.post(...). I can see that the message is received correctly by loooking at the contents of DLV_MESSAGE. However, the pick activity times out every time (after 10m). Looking at DLV_SUBSCRIPTION reveals that the conversation_id for the pick/receive activity is set to a value of the form bpel://localhost/default/MyBpelProcessName~1.0/7610001-BpInv0-BpSeq2.7-2. As far as I know, this should instead be set to the UUID that ora:getConversationId() returned before performing the invoke activity. What is going wrong here?
    Thanks for your help!

  • Error in Invoking External Web Service in BPEL

    Hello,
    I have a Temperature Conversion Web Service deployed on an external server.
    I want to invoke this Web Service in my BPEL process.
    I got the wsdl loacation of the Web Service as "http://webservices.daelab.net/temperatureconversions/TemperatureConversions.wso?WSDL" and then in my workspace, I created a Web Service out of that WSDL.
    My idea was to create a web service out of that WSDL and then to deploy that web service on SOA server so that i can invoke that deployed service in my BPEL process, but when i am creating a web service out of that WSDL , and trying to test the webservice in my local oc4j, i am gettting a fault exception.
    Am i doing anything wrong ? Is there any other alternative to call a external web service in BPEL?
    Thanks
    Nutan

    Hi,
    you are on the wrong track....
    Open your BPEL. Put the http://webservices.daelab.net/temperatureconversions/TemperatureConversions.wso?WSDL into a PartnerLink and wire an invoke against this PartnerLink....
    Put the parameters via assign into the variables.
    Done...
    Why do you want to create an interal webservice and invoke this one via BPEL? Do you want to invoke the external webservice from the internal one?

  • Problem invoking a web service from soa11g BPEL.

    Hi ,
    I am trying to invoke a web service from soa bpel 11g composite.
    We have the wsdl, wsdl URL of the web service along with the user name , password credentials.
    Initially w/o any WS policy attached and testing the composite, it fails with the below message
    *<fault>*
    *<bpelFault>*
    *<faultType>0</faultType>*
    *<remoteFault>*
    *<part name="summary">*
    *<summary>An Authentication object was not found in the SecurityContext</summary>*
    *</part>*
    *<part name="detail">*
    *<detail>javax.xml.ws.soap.SOAPFaultException: An Authentication object was not found in the SecurityContext</detail>*
    *</part>*
    *<part name="code">*
    *<code>soap:Server</code>*
    *</part>*
    *</remoteFault>*
    *</bpelFault>*
    *</fault>*
    *<faultType>*
    *<message>0</message>*
    *</faultType>*
    *</messages>*
    So I have gone back to the composite and added the WS policy (oracle/wss_username_token_client_policy) by Right clicking on web service -> Configure WS Policy -> Security -> oracle/wss_username_token_client_policy -> OK.
    After this I have added the following binding properties 'oracle.webservices.auth.username' , 'oracle.webservices.auth.password' with the respective values and deployed it again.
    Even then I face the same issue. I have looked into the EM console and found the HTTP username and password properties were blank for this Web service even though the WS policy was attached.
    Later I have tried editing the username pwd from the EM console, only to find out that the composite was now failing in the previous step (an ordinary db adapter with a select statement) even before it reaches the web service invocation.
    If I redeploy the composite, the http username and pwd properties in the EM console are erased and when i test it, it errors out at the web service invocation with the same issue again.
    Any pointers on how to solve this issue ??
    How can I figure out what is the security policy the web service is using ??
    Regards,
    Shiva Kiran

    Hi,
    Can anyone help me with this ??
    I guess I am not able to send the authorization credentials via the request to the web service invocation.
    Plz help ! This is a bit urgent..
    Regards,
    Shiva Kiran

  • Issues in invoking a web service from a JAVA/BPEL client...

    We are trying to invoke a web service from a JAVA/BPEL client using org.apache.soap classes. But everytime we are running into issues of IllegalAccessError or InvalidClassError or IncompatibleClassError based on different jars we are trying to include in our project. Attached is a simple BPEL project which tries to invoke a web service through JAVA embedding (no supporting jars need to be included explicitly). It erros with following trace:
    Class org/apache/soap/Envelope violates loader constraints
         Invalid class: org.apache.soap.Envelope
         Loader: soap:10.1.3
         Code-Source: /slot/ems1508/oracle/product/10.1.3.1/OracleAS_1/webservices/lib/soap.jar
         Configuration: <code-source> (ignore manifest Class-Path) in META-INF/boot.xml in /slot/ems1508/oracle/product/10.1.3.1/OracleAS_1/j2ee/home/oc4j.jar
         Dependent class: org.apache.soap.rpc.RPCMessage
         Loader: soap:10.1.3
         Code-Source: /slot/ems1508/oracle/product/10.1.3.1/OracleAS_1/webservices/lib/soap.jar
         Configuration: <code-source> (ignore manifest Class-Path) in META-INF/boot.xml in /slot/ems1508/oracle/product/10.1.3.1/OracleAS_1/j2ee/home/oc4j.jar
    Could you please help us out or provide any pointers. Any help would be highly appreciated

    Because you weren't told what to get, perhaps you already have it eh?
    What you want to read up about is JAX-WS, which is the webservice API bundled by default with your JDK (Java 6 and up). You'll find the wsimport tool in the bin directory of your JDK. I recommend you explore that directory and read up about all the executables you can find there, to be more prepared in the future. Know the tools you work with and all that. Most tools have a manual on this website:
    http://www.oracle.com/technetwork/java/javase/tech/index.html
    (under tools and utilities). Not wsimport, that is part of the jax-ws documentation. Better you look for jax-ws tutorials using Google, it will be quicker.

  • Invoking Imaging Web Service from BPEL is failing

    Hi,
    My Env is on latest 11g 11.1.1.8.
    I am trying to invoke the Imaging Web Services (http://host:port/imaging/ws/ApplicationService?wsdl)deployed in another Weblogic Server from Bpel. When I tried to invoke this web service with out security credentials it was failing due to access issue.
    I tried invoking  the imaging web service by following below steps.
    Added oracle/wss_http_token_client_policy for Imaging Web service Reference.
    Added these properties in Composite for the reference binding as below.
    <wsp:PolicyReference URI="oracle/wss_http_token_client_policy"
                               orawsp:category="security" orawsp:status="enabled"/>
          <property name="weblogic.wsee.wsat.transaction.flowOption"
                    type="xs:string" many="false">SUPPORTS</property>
          <property name="weblogic.wsee.wsat.transaction.version" type="xs:string"
                    many="false">DEFAULT</property>
         <property name="oracle.webservices.auth.username" type="xs:string"
                    many="false" override="may">weblogicxz</property>
          <property name="oracle.webservices.auth.password" type="xs:string"
                    many="false" override="may">welcome111</property>
          <property name="httpBasicUsername">weblogicxz</property>
          <property name="httpBasicPassword">welcome111</property>
    But now While testing my Bpel Flow my reference is failing with below erro. Can you please help me resolving this issue. 
    <messages>
    <input>
    <Invoke1_getApplication_InputVariable>
    <part  name="parameters">
    <getApplication>
    <appNameId>
    <id>2</id>
    <name>CaptureImageApplication</name>
    </appNameId>
    <sectionFlags/>
    </getApplication>
    </part>
    </Invoke1_getApplication_InputVariable>
    </input>
    <fault>
    <bpelFault>
    <faultType>0</faultType>
    <remoteFault>
    <part  name="summary">
    <summary>MustUnderstand headers:[{http://schemas.xmlsoap.org/ws/2004/10/wscoor}CoordinationContext] are not understood</summary>  
    </part>
    <part  name="detail">
    <detail>oracle.j2ee.ws.client.jaxws.JRFSOAPFaultException: Client received SOAP Fault from server : MustUnderstand headers:[{http://schemas.xmlsoap.org/ws/2004/10/wscoor}CoordinationContext] are not understood</detail>  
    </part>
    <part  name="code">
    <code>{http://schemas.xmlsoap.org/soap/envelope/}MustUnderstand</code>  
    </part>
    </remoteFault>
    </bpelFault>

    Hi,
    I don't think it is failing due to access issue, I think it is failing because one of the parts is NOT configured to use WS-AT (WS-Atomic Transactions)...
    MustUnderstand headers:[{http://schemas.xmlsoap.org/ws/2004/10/wscoor}CoordinationContext] are not understood
    Why did you add this?
          <property name="weblogic.wsee.wsat.transaction.flowOption"
                    type="xs:string" many="false">SUPPORTS</property>
          <property name="weblogic.wsee.wsat.transaction.version" type="xs:string"
                    many="false">DEFAULT</property>
    Cheers,
    Vlad

  • Issue: BPEL invoking Axis web service

    Hi
    We are calling a Axis web service from BPEL.. The web service has been defined to be a request only 1 way service. The axis service takes around 3-5 minutes to complete the job( data insertion in DB).. But seems like when BPEL invokes the web service; BPEL thread is waiting (thread is not released) and the BPEL process does not move forward until the web service completes the job....
    Any pointers on how the deal with the issue will be helpful!!
    Thanks

    Hi Lovenish,
    Goto console-> select domain> Configuration->JTA
    Check timeout seconds.
    2. i don't know what kind of partner link you are invoking.
    check composite.xml, is there any property like retry.interval .
    3. ◦SyncMaxWaitTime: The maximum time a request and response operation takes before timing out.
    The maximum time a request/response operation will take before it times out. The default value is 45 seconds.
    Regards,
    Padmanabham

  • Invoking a web service from jcd

    hi all,
    Is there any built-in class in CAPS5.1 for invoking a web servervice from jcd directly. Or is there any some other automation/mechanism to achieve the same, plz provide me any sample code avilable for the same.its very urgent for me.
    Thanks

    Hello rss,
    If you want to invoke a web service from a JCD you will have to build the SOAP message using JAX-RPC or AXIS and then programmatically creat an HTTP connection.
    Or you can leverage the HTTP(S) eWay and then you only have to build the SOAP message.
    Or use eInsight. You can import a WSDL into eInsight and eInsight will offer you a business process Activity to invoke the web service operations defined in the WSDL.

  • Invoking a web service from dynamic client in weblogic 7

    Is it possible to invoke a webservice from dynamic client in weblogic 7. Because i tried and it doesn't work. But it works with WL 8.1
    I don't see any samples on the net for weblogic 7.

    Hello rss,
    If you want to invoke a web service from a JCD you will have to build the SOAP message using JAX-RPC or AXIS and then programmatically creat an HTTP connection.
    Or you can leverage the HTTP(S) eWay and then you only have to build the SOAP message.
    Or use eInsight. You can import a WSDL into eInsight and eInsight will offer you a business process Activity to invoke the web service operations defined in the WSDL.

  • Getting .ServiceException while invoking a web service from a client

    I created a web service and then created a web service client from wsdl in eclipse. I am getting the following error when trying to call the web service from client.
    javax.xml.rpc.ServiceException: There is no stub implementation for the interface: examples.ejb.ejb20.basic.statelessSession.TraderBeanService
    Please find the files here -
    wsdl - http://www.sourcepod.com/uneksu63-9627
    Trade.java - http://www.sourcepod.com/mltizr21-9628
    TradeResult.java - http://www.sourcepod.com/npledh19-9629
    TradeResultService - http://www.sourcepod.com/hbjevm45-9630
    TradeResultServiceLocator.java - http://www.sourcepod.com/mrpagh85-9631
    TradeResultSoapBindingStub.java - http://www.sourcepod.com/zjrkjv91-9632
    package examples.ejb.ejb20.basic.statelessSession;
    import javax.xml.ws.WebServiceRef;
    import javax.xml.namespace.QName;
    public class HelloClient {
        @WebServiceRef(wsdlLocation="http://localhost:7001/webservice/services/TraderBean?wsdl")
        String url = "http://localhost:7001/webservice/services/TraderBean?wsdl";
             QName qname = new QName("http://statelessSession.basic.ejb20.ejb.examples", "TraderBeanService");
        public static void main(String[] args) {
            try {
                HelloClient client = new HelloClient();
                client.doTest(args);
            } catch(Exception e) {
                e.printStackTrace();
        public void doTest(String[] args) {
            try {
                 TraderBeanServiceLocator service = new TraderBeanServiceLocator(url,qname);
                TraderBean port = (TraderBean) service.getPort(TraderBeanService.class);
                System.out.println("Invoking the sayHello operation on the port.");
                TradeResult response = port.buy("INR", 100);
                System.out.println(response.getNumberTraded());
            } catch(Exception e) {
                e.printStackTrace();
    }How to solve the stub implementation error?
    Edited by: 901007 on 12 Aug, 2012 10:57 AM

    That did not work either. There was getPorts() and not getPort() and I used getPorts(). And I am getting the below error,
    java.lang.ClassCastException: java.util.HashMap$KeyIterator
    But when I try like the below,
        @WebServiceRef(wsdlLocation="http://localhost:7001/webservice/services/TraderBean?wsdl")
        String url = "http://localhost:7001/webservice/services/TraderBean?wsdl";
        QName qname = new QName("http://statelessSession.basic.ejb20.ejb.examples", "TraderBeanService");
                TraderBeanServiceLocator service = new TraderBeanServiceLocator();
                TraderBean port = (TraderBean) service.getPort(TraderBean.class);
                System.out.println("Invoking the sayHello operation on the port.");
                TradeResult response = port.buy("INR", 200);
                System.out.println(response.getNumberTraded());I am getting the below error,
    Invoking the sayHello operation on the port.
    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: java.lang.InstantiationException: examples.ejb.ejb20.basic.statelessSession.TraderBean
    faultActor:
    faultNode:
    faultDetail:
         {http://xml.apache.org/axis/}hostname:Gopi_Desktop
    java.lang.InstantiationException: examples.ejb.ejb20.basic.statelessSession.TraderBean
    As you can see the statement"Invoking the sayHello operation on the port." is getting printed but after that error is thrown.
    I tried changing it to, TraderBean port = (TraderBean) service.getPort(qname, TraderBeanServiceLocator.class);
    But even this is throwing the same error, java.lang.InstantiationException: examples.ejb.ejb20.basic.statelessSession.TraderBean
    I changed my webservice using Axis2 web service runtime and this time when I try to invoke using client, I am getting the following,
    [WARN] Weblogic's StAX implementation is unsupported and some Axiom features will not work as expected! Please use Woodstox instead.
    Exception in thread "Main Thread" org.apache.axis2.AxisFault: javax.xml.stream.XMLStreamException: Error at line:1 col:217 ':' Already got a ':' in name
         at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)
         at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
         at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
         at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
         at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
         at examples.ejb.ejb20.basic.statelessSession.TraderBeanStub.addTwoNumbers(TraderBeanStub.java:185)
         at examples.ejb.ejb20.basic.statelessSession.TestClient.main(TestClient.java:15)
    If you need more details, I can post the steps I did to build it...
    Any help is greately appreciated.
    Edited by: 901007 on 15 Aug, 2012 10:27 PM
    Edited by: 901007 on 15 Aug, 2012 10:49 PM

  • Invoking one web service from another web service

    Hi there,
    I want to invoke a web service lets say X. But befor sending parameters to this web service, what i want to do is first pass the parameters to a web service called Y and Y will decide wether to call X or not. In other words i want to invoke a web service from another web service.
    Its kind of urget so do the needful asap.
    Thanks

    Calling another webservice from within a webservice does not require anything special. The service (say svc1) that calls another service (svc2) will be a web svc client. So you will have to do the same steps for svc1 as you would do for any other web service client

  • Invoking a Web Service from a mobile application

    Hi all,
    I have installed Sun Wireless Toolkit 2.5.2 for CDLC and MTJ.
    I want to invoke a web service from an MTJ Application and I have not a clue of how to start.
    First let me say I am working with RSA (which is over Eclipse)
    My first attempt was creating the web service client and then try to convert it into a mobile application (through the use of MTJ --> Convert to Midlet Project)
    I found 4 errors when doing so:
    First was solved changing the jre to 1.6.
    I am still dealing with the following three:
    * Error preverifying class mipaquete.MiServicioService
    java/lang/NoClassDefFoundError: javax/xml/ws/Service
    * Error preverifying class mipaquete.ObjectFactory
    VERIFIER ERROR mipaquete/ObjectFactory.createMiOperacion(Lmipaquete/MiOperacion;)Ljavax/xml/bind/JAXBElement;:
    Illegal type in constant pool
    * Type mipaquete.MiServicioPortProxy$Descriptor Error preverifying class mipaquete.MiServicioPortProxy$Descriptor
    VERIFIER ERROR mipaquete/MiServicioPortProxy$Descriptor.getDispatch()Ljavax/xml/ws/Dispatch;:
    Illegal type in constant pool
    I only started to solve the first one. I assumed that I have to add the right .jar to manifest file (please let me know if I am wrong). I tried to do by adding the textual classpath rt.jar, however I am not able to give it the right path:
    C:\Archivos de programa\IBM\SDP\runtimes\base_v7_stub\java\jre\lib\rt.jar (even though I split the too long sentence into two and I include an space at the beginning of the second, I still get an error when saving)
    I would appreciate any help
    A) to solve the existing problems
    or
    B) To create a web service client in an EclipseME application through any other method.
    Thank-you very much in advance,
    Guadalupe
    PS Any clue is welcomed!!

    Hello rss,
    If you want to invoke a web service from a JCD you will have to build the SOAP message using JAX-RPC or AXIS and then programmatically creat an HTTP connection.
    Or you can leverage the HTTP(S) eWay and then you only have to build the SOAP message.
    Or use eInsight. You can import a WSDL into eInsight and eInsight will offer you a business process Activity to invoke the web service operations defined in the WSDL.

  • How to invoke a Web Service from PL/SQL with Complex Type as  input.

    Hello,
    I am trying to invoke a web service from PL/SQL using the UTL_DBWS package.
    The web service expects a complex type as input (defined below):
    <xs:complexType name="MsgType">
    <xs:sequence>
    <xs:element name="sender" type="xs:string"/>
    <xs:element name="messageId" type="xs:string"/>
    <xs:element name="messageType" type="xs:string"/>
    <xs:element name="dateSent" type="xs:date"/>
    </xs:sequence>
    </xs:complexType>
    How to construct input to this in PL/SQL Procedure?
    Has any body tried this before?
    An exmaple will be helpful.
    Thanks

    Dear,
    I have read your article, it is useful for me. But I cannot Apply to my case. Please kindly help me. Thank you.
    When running, the error occurs:
    1:39:31 Execution failed: ORA-20000: soapenv:Server.userException - org.xml.sax.SAXParseException: Attribute name &quot;password&quot; associated with an element type &quot;user&quot; must be followed by the &apos; = &apos; character.
    My webservice Url: http://abc.com.vn:81/axis/ABC_WS_TEST.jws?wsdl
    I make PL/SQL (similiar as your example)
    FUNCTION INVOKESENDMT
    RETURN VARCHAR2
    AS
    l_request soap_api.t_request;
    l_response soap_api.t_response;
    l_return VARCHAR2(32767);
    l_url VARCHAR2(32767);
    l_namespace VARCHAR2(32767);
    l_method VARCHAR2(32767);
    l_soap_action VARCHAR2(32767);
    l_result_name VARCHAR2(32767);
    p_zipcode VARCHAR2(160);
    BEGIN
    --p_zipcode:='''TEST'' ; ''TEST'';''84912187098'';''84912187098'';''0'';''8118'';''1'';''000001'';''ThuNghiem'';''''';
    p_zipcode:='TEST';
    -- Set proxy details if no direct net connection.
    --UTL_HTTP.set_proxy('myproxy:4480', NULL);
    --UTL_HTTP.set_persistent_conn_support(TRUE);
    -- Set proxy authentication if necessary.
    --soap_api.set_proxy_authentication(p_username => 'TEST',
    -- p_password => 'TEST');
    l_url := 'http://abc.com.vn:81/axis/ABC_WS_TEST.jws';
    l_namespace := 'xmlns="' || l_url || '"';
    l_method := 'sendMT';
    l_soap_action := l_url || '#sendMT';
    l_result_name := 'sendMTResponse';
    l_request := soap_api.new_request(p_method => l_method,
    p_namespace => l_namespace);
    soap_api.add_parameter(p_request => l_request,
    p_name => 'user password sender receiver chargedflag servicenumber messagetype messageid textcontent binarycontent',
    p_type => 'xsd:string',
    p_value => p_zipcode);
    l_response := soap_api.invoke(p_request => l_request,
    p_url => l_url,
    p_action => l_soap_action);
    l_return := soap_api.get_return_value(p_response => l_response,
    p_name => l_result_name,
    p_namespace => l_namespace);
    RETURN l_return;
    END;

Maybe you are looking for

  • How to get the jclass from a jmethodID

    Hello guys, i'm new in jvmti. My first project, for my own, is a simple profiler. I want to trace every method enter and exist, so i impl. a static void JNICALL     cbMethodEntry(jvmtiEnv *jvmti, JNIEnv* env,                 jthread thread, jmethodID

  • Thumbnails in New Tab Page are not resizing

    Hey, Since the latest update (33.0.2), the thumbnails for the websites on the 'New Tab Page' do not resize when the window is resized, so I cannot see all the thumbnails unless the window is full screen. It used to be that if I dragged the corner of

  • Another Question...rotating on two axis

    Hi again. Well I have yet another question...how do I set a translation to rotate on two axis? Like I know that I can do: TransformGroup tg; Transform3D t3d = new Transform3D(); t3d.setRotation(new AxisAngle4f(1f,0f,0f,(some angle))); tg.setTransform

  • Filling out Canadian Tax Form GST506 E

    Hi, I am registered Apple Developer from Canada. In "Part D" of this form it says that "Have an authorized person of your company sign and date w/t his/her title". I'm not involved in a company, whatsoever. I am an Individual that would like to creat

  • Dynamic field display

    hi all, I am two fields in my selection-screen. when i enter value in one field, it should automatically display another field before processing selection screen. please give me the solution. regards, balaaji.