Building & Consuming Async Web Service

I'm fairly new to web services.  I built a WCF Web Service.  It works fine when making synchronous calls.  I'm stuck trying to make an async call.  On the client side in Visual Studio, I get a "Cannot await TestWebServices.QuotingEngineService.SmallGroupQuote[]"
error when trying to make the call.  Below is the pic of client configuration, the client code followed by the web service code. If you can point me in the right direction it would be greatly appreciated:
Client Web Config:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IQuotingService" maxReceivedMessageSize="2147483647" maxBufferPoolSize="524288" maxBufferSize="2147483647" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://10.32.0.99/QuotingWebServiceHMO/Service.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IQuotingService"
contract="QuotingEngineService.IQuotingService" name="BasicHttpBinding_IQuotingService" />
</client>
Screen Shot of Configuration:
Page Load:
protected void Page_Load(object sender, EventArgs e)
List<int> corpIDs = new List<int>() { 57 };
fetchRenewalAsync(corpIDs);
fetchRenewalAsync - Where I get the error in VS:
private static async void fetchRenewalAsync(List<int> corpIDs)
using (QuotingServiceClient client = new QuotingServiceClient())
var task1 = client.GetSmallGroupRenewals(corpIDs.ToArray(), "3/1/2015", "2/23/2015", 121);
return await task1;
Quoting Service Interface:
[ServiceContract]
public interface IQuotingService
// Small Group Renewals:
[OperationContract]
List<SmallGroupQuote> GetSmallGroupRenewals(List<int> corpIDs, string effectiveDate, string activeDate, int censusBatchID);
Quoting Service:
namespace QuotingServices
public class QuotingService : IQuotingService
#region List<SmallGroupQuote> GetSmallGroupRenewals
public List<SmallGroupQuote> GetSmallGroupRenewals(List<int> corpIDs, string effectiveDate, string activeDate, int censusBatchID)
return SmallGroup.GetSmallGroupRenewals(corpIDs, effectiveDate, activeDate, censusBatchID);
#endregion
Another thing I noticed is the Async option is not available when I run the Web Service in debug mode, if that indicates anything.
Thanks

Hi Jamezn2013,
I see that you have used the following code:
private static async void fetchRenewalAsync(List<int> corpIDs)
using (QuotingServiceClient client = new QuotingServiceClient())
var task1 = client.GetSmallGroupRenewals(corpIDs.ToArray(), "3/1/2015", "2/23/2015", 121);
return await task1;
If you want to make the asynchronous WCF call, please try to modify the client.GetSmallGroupRenewals as client.GetSmallGroupRenewalsAsync:
private static async void fetchRenewalAsync(List<int> corpIDs)
using (QuotingServiceClient client = new QuotingServiceClient())
var task1 = client.GetSmallGroupRenewalsAsync(corpIDs.ToArray(), "3/1/2015", "2/23/2015", 121);
return await task1;
For more information, please try to refer to the following article:
http://www.codeguru.com/columns/experts/building-and-consuming-async-wcf-services-in-.net-framework-4.5.htm .
Best Regards,
Amy Peng
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey.

Similar Messages

  • Building async web service

    Hi
    Please provide me with pointers on how to develop async webservice in JEE5..
    Please note that I am interested in building the service and NOT the client..
    Thanks
    Senthil

    Hi Jamezn2013,
    I see that you have used the following code:
    private static async void fetchRenewalAsync(List<int> corpIDs)
    using (QuotingServiceClient client = new QuotingServiceClient())
    var task1 = client.GetSmallGroupRenewals(corpIDs.ToArray(), "3/1/2015", "2/23/2015", 121);
    return await task1;
    If you want to make the asynchronous WCF call, please try to modify the client.GetSmallGroupRenewals as client.GetSmallGroupRenewalsAsync:
    private static async void fetchRenewalAsync(List<int> corpIDs)
    using (QuotingServiceClient client = new QuotingServiceClient())
    var task1 = client.GetSmallGroupRenewalsAsync(corpIDs.ToArray(), "3/1/2015", "2/23/2015", 121);
    return await task1;
    For more information, please try to refer to the following article:
    http://www.codeguru.com/columns/experts/building-and-consuming-async-wcf-services-in-.net-framework-4.5.htm .
    Best Regards,
    Amy Peng
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Consuming SAP web services with tables

    I'm doing kind of feasibility study on consuming SAP web
    services from CF.
    So far so good, but I'm stuck dealing with tables
    (import/export parameters in SAP world).
    I know how to receive a table object from SAP functions:
    * With Apache Axis v1.2: pass an empty CF structure as a
    parameter
    * With Apache Axis v1.4: pass an empty CF array as a
    parameter
    Then the parameter is filled with data (replaced with Java
    object) and we can just parse the object accordingly.
    My question here is whether or not we can pass a *table with
    actual records*.
    For example, I want to pass a table with multiple records to
    update DB records under SAP.
    I tried passing (1) CF array of structure and (2) Java
    ArrayList with no chance.
    The web service call itself completes without errors (no
    method signature error), but the SAP function seems to see the
    parameter as an empty table.
    Anyone has been successful with this case?
    Any suggestion would be much appreciated.

    Thanks Dan,
    Unfortunately CF query object didn't work either.
    Now I'm looking at the code generated by Flex Builder to see
    how the classes are like ;-)
    It's just an ArrayCollection of simple value objects
    (representing a row).
    So CF array of structure or Java ArrayList looks a reasonable
    approach though they don't at all.

  • Consuming  a Web Service with PasswordDigest Authentication in ABAP

    Hello,
    I need to consume a web service in ABAP from a non-SAP application. The web service uses wsse:UsernameToken with PasswordDigest in the SOAP Header for authentication. However, I havent seen any documentation for using Password Digest in ABAP.
    Is it possible to use Password Digest in ABAP?
    Thanks
    Ajay

    Hi Marc,
    Here is the ABAP Code to build the SOAP header.
    FUNCTION Z_GET_SOAP_REQUEST_HEADER.
    *"*"Local Interface:
    *"  EXPORTING
    *"     VALUE(ER_SECURITY_ELEMENT) TYPE REF TO  IF_IXML_ELEMENT
    *date and time data
      data: lv_sys_date like sy-datum,
            lv_sys_time like sy-uzeit,
            lv_year(4) type c,
            lv_month(2) type c,
            lv_date(2) type c,
            lv_hour(2) type c,
            lv_min(2) type c,
            lv_sec(2) type c.
      data : lv_created type string,
            lv_snonce type string,
            lv_b64nonce type string,
            lv_webservice_password type string,
            lv_webservice_userid type string,
            lv_spassword type string,
            lv_xpassword type xstring,
            lv_hpassword type hash160x,
            lv_b64password(255) type c,
            lv_xpasslen type i,
            lv_hpasslen type i.
    *xml declartions
      data : lv_sheader type string,
            lv_xheader type xstring,
            xml_document TYPE REF TO if_ixml_document,
            xml_root TYPE REF TO if_ixml_element,
            xml_element TYPE REF TO if_ixml_element,
            xml_node TYPE REF TO if_ixml_node.
    *get the c-link password.
    CALL METHOD ZCL_CDB_SYNC_CFG_READER=>GET_USERID_PASSWORD
      IMPORTING
        EV_USER_ID  = lv_webservice_userid
        EV_PASSWORD = lv_webservice_password
    *Evaluate created date time
      lv_sys_date = sy-datum.
      lv_sys_time = sy-uzeit.
      lv_year = lv_sys_date(4).
      lv_month = lv_sys_date+4(2).
      lv_date = lv_sys_date+6(2).
      lv_hour = lv_sys_time(2).
      lv_min = lv_sys_time+2(2).
      lv_sec = lv_sys_time+4(2).
      CONCATENATE lv_year '-' lv_month '-' lv_date 'T' lv_hour ':' lv_min ':' lv_sec '.000Z' into lv_created.
    *Create and encode the nonce
      CALL FUNCTION 'GENERAL_GET_RANDOM_STRING'
        EXPORTING
          NUMBER_CHARS  = 24
        IMPORTING
          RANDOM_STRING = lv_snonce.
      CALL METHOD cl_http_utility=>ENCODE_BASE64
        EXPORTING
          UNENCODED = lv_snonce
        RECEIVING
          ENCODED   = lv_b64nonce.
    *create the password to be sent to web service
      CONCATENATE lv_snonce lv_created lv_webservice_password into lv_spassword.
    *encode password to xstring
      CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
        EXPORTING
          TEXT   = lv_spassword
        IMPORTING
          BUFFER = lv_xpassword.
      lv_xpasslen = xstrlen( lv_xpassword ).
      CALL FUNCTION 'CALCULATE_HASH_FOR_RAW'
        EXPORTING
          ALG      = 'SHA1'
          DATA     = lv_xpassword
          LENGTH   = lv_xpasslen
        IMPORTING
          HASHX    = lv_hpassword
          HASHXLEN = lv_hpasslen.
      CALL FUNCTION 'SCMS_BASE64_ENCODE'
        EXPORTING
          INPUT            = lv_hpassword
          INPUT_LENGTH     = lv_hpasslen
        IMPORTING
          OUTPUT           = lv_b64password
        EXCEPTIONS
          OUTPUT_TOO_SMALL = 1
          OTHERS           = 2.
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * build the header
      CONCATENATE
    '<soap-env:Header xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">'
    '<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">'
    '<wsse:UsernameToken wsu:Id="########" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">'
    '<wsse:Username>'
    lv_webservice_userid
    '</wsse:Username>'
    '<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">'
    lv_b64password
    '</wsse:Password>'
    '<wsse:Nonce>'
    lv_b64nonce
    '</wsse:Nonce>'
    '<wsu:Created>'
    lv_created
    '</wsu:Created>'
    '</wsse:UsernameToken>'
    '</wsse:Security>'
    '</soap-env:Header>'
    INTO lv_sheader.
    *Build the xml header element
      lv_xheader = cl_proxy_service=>cstring2xstring( lv_sheader ).
      TRY.
          CALL FUNCTION 'SDIXML_XML_TO_DOM'
            EXPORTING
              xml           = lv_xheader
            IMPORTING
              document      = xml_document
            EXCEPTIONS
              invalid_input = 1
              OTHERS        = 2.
          IF sy-subrc = 0 AND NOT xml_document IS INITIAL.
            xml_root = xml_document->get_root_element( ).
            er_security_element ?= xml_root->get_first_child( ).
            gr_soap_security_header = er_security_element.
          ENDIF.
        CATCH cx_ai_system_fault .
      ENDTRY.
    ENDFUNCTION.

  • How to use a deployable proxy to consume a web service?

    HI Gurus,
    I am following this article below which helpfully explains how to create a proxy. So far so good. I have been able to create a proxy. However, the article only describes how to build a proxy.
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/70c7d0f7-153d-2a10-5d96-d334b67cd771
    In the concluding part of the document the author says "In my next article I will tell you how to use this deployable proxy to consume the web service in web application."
    I have looked around the SDN but have not been able to get the next part of this document.
    I have a JSPDynpage application which is required to consume a webservice. I want to use this proxt to consume the webservice.
    Any help or any other document that explains how to use a deployable proxy to consume a web service will be helpful.
    Thanks,
    SB

    Hi,
    Here is an example how to consume the deployable proxy in web application:
    http://help.sap.com/saphelp_nw70/helpdata/EN/ca/c8efe3e8a64163b01924ad4ccd706d/frameset.htm
    http://help.sap.com/saphelp_nw70/helpdata/EN/5c/971740198d8f5ce10000000a155106/frameset.htm
    Regards,
    Praveen Gudapati

  • ERROR Consuming external Web Services from JDE E1

    Hello everybody,
    I am trying to consume external web services from JD Edwards Enterprise One. For that, I have followed "Consuming External Web Services Tutorial".
    I have followed all the steps successfully, but when the final test called from an interactive application to the business function that I had created in C get the following error messages in the log file:
    [WARN ] JDE - [RUNTIME] *ERROR CallObject@13d346d: CallObject.executeRequest(): Problem executing function [consumingWS] lib [CALLBSFN] GetProcAddress failed. Please see Enterprise Server log for details. Business function cannot be found user:JDE Env:DV900*
    [SEVERE] JDE - [RUNTIME] FormEngine.doEvent(): BSFN failed and need roll back!! | Form Name : P5500055_W5500055A com.jdedwards.runtime.base.SystemException: There was a problem with the sever while running the business function consumingWs.\nThe current transaction has been lost.\nPlease exit the application and restart it.\nButton clicked Line number 1\nP5500055_W5500055A
    com.jdedwards.runtime.base.SystemException: There was a problem with the sever while running the business function consumingWs.\nThe current transaction has been lost.\nPlease exit the application and restart it.\nButton clicked Line number 1\nP5500055_W5500055A
    at com.jdedwards.runtime.engine.form.FormEngine.doEvent(Unknown Source)
    at com.jdedwards.runtime.vtcomponent.form.VTForm.doEvent(Unknown Source)
    at com.jdedwards.runtime.engine.ButtonEngine.onClick(Unknown Source)
    at com.jdedwards.runtime.vtcomponent.VTButton.onClick(Unknown Source)
    at com.jdedwards.runtime.vtcomponent.VTButton.processVirtualEvent(Unknown Source)
    at com.jdedwards.runtime.virtual.OWVirtual.processVTEvent(Unknown Source)
    at com.jdedwards.runtime.virtual.OWVirtual.processEventLoop(Unknown Source)
    at com.jdedwards.runtime.virtual.OWVirtual.run(Unknown Source)
    at com.jdedwards.base.util.ThreadPool$WorkerThread.run(Unknown Source)
    I have tested:
    1) Incorrect OCM for BSFNs.
    Mapped to development Enterprise Server, so it was failing to find the BSFN.
    2) Increase heap space for Java.
    3) Business Function Location (C/S): "Both Client & Server Function"
    4) Link the Business function with its parent DLL (CALLBSFN.dll)
    I'm not sure I'd done well...
    5) Update Package
    From Buildlog.txt I can see the following error:
    Copying \\ORACLE-JDE\E900\DV900\package\DV900FB\lib32\sCALLBSF.lib to \\ORACLE-JDE\E900\DV900\package\DVU100427\lib32\sCALLBSF.lib
    Copying \\ORACLE-JDE\E900\DV900\package\DV900FB\work\jdertdll.c to \\ORACLE-JDE\E900\DV900\package\DVU100427\work\jdertdll.c
    Generating Makefile: E:\e900\DV900\obj\CALLBSFN.mak
    B5500055 : Not checked into pathcode, excluded from the build
    .Makefile generated.
    Building business functions.
    ************CALLBSFN************
    jdertdll.c
    Creating library \\ORACLE-JDE\E900\DV900\package\DVU100427\lib32\CALLBSFN.lib and object \\ORACLE-JDE\E900\DV900\package\DVU100427\lib32\CALLBSFN.exp
    CALLBSFN.exp : error LNK2001: unresolved external symbol _consumingWS@12
    \\ORACLE-JDE\E900\DV900\package\DVU100427\bin32\CALLBSFN.dll : warning LNK4088: image being generated due to /FORCE option; image may not run
    To not build the business function is not possible the package deployment for the server becomes aware of the presence of this business function...
    But I have not managed to solve the problem, do you have any idea?
    Thank you and regards.

    Hello again,
    I have modied OCM record with a correct BSSV (the name and the port number were wrong).
    And other thing that I have tested is change the parent DLL with a new DLL created by me (Object Name: CALLWS.dll, Product Code: 0, Product System Code:0) and the error is:
    *ERROR CallObject@25b780: CallObject.executeRequest(): Problem executing function [invocarWS] lib [CALLWS] LoadLib failed.Please see Enterprise Server log for details. Library in which business funtion resides cannot be loaded user:JDE Env:DV900*
    [SEVERE] JDE - [RUNTIME] FormEngine.doEvent(): BSFN failed and need roll back!! | Form Name : P5500055_W5500055A com.jdedwards.runtime.base.SystemException: There was a problem with the sever while running the business function invocarWS.\nThe current transaction has been lost.\nPlease exit the application and restart it.\nButton clicked Line number 1\nP5500055_W5500055A
    com.jdedwards.runtime.base.SystemException: There was a problem with the sever while running the business function invocarWS.\nThe current transaction has been lost.\nPlease exit the application and restart it.\nButton clicked Line number 1\nP5500055_W5500055A
         at com.jdedwards.runtime.engine.form.FormEngine.doEvent(Unknown Source)
         at com.jdedwards.runtime.vtcomponent.form.VTForm.doEvent(Unknown Source)
         at com.jdedwards.runtime.engine.ButtonEngine.onClick(Unknown Source)
         at com.jdedwards.runtime.vtcomponent.VTButton.onClick(Unknown Source)
         at com.jdedwards.runtime.vtcomponent.VTButton.processVirtualEvent(Unknown Source)
         at com.jdedwards.runtime.virtual.OWVirtual.processVTEvent(Unknown Source)
         at com.jdedwards.runtime.virtual.OWVirtual.processEventLoop(Unknown Source)
         at com.jdedwards.runtime.virtual.OWVirtual.run(Unknown Source)
         at com.jdedwards.base.util.ThreadPool$WorkerThread.run(Unknown Source)
    It seems like it is not possible to find the CALLWS dll... Althought it was built and compiled without errors and warnings...
    I would like to debug the Business Function in C from Microsoft Visual Studio 2005, but I can't, because breakpoints are disable.
    I have followed the following manual:
    E1: BSFN: Debugging Business Functions Using Visual Studio .NET 2003, 2005 and 2008 (I have founded it in Oracle Support (Metalinki)).
    And here they say:
    "It is a normal feature of visual studio 2003/2005 to disable break point at the start of a debug session and display a warning saying no symbol is loaded. Break point will only be activated on demand when the code to debug is loaded in to the runtime memory".
    I think is necessary add the referency with parent DLL (in my case, CALLWS.dll) but I don't know how can I do it. I have tested to insert in Business Function's source code the following line:
    "#pragma comment(lib,"CALLWS.dll")" to force to include it, but when it was built:
    ************CALLWS************
    B5500055.c
    Replacing B5500055.obj
    jdertdll.c
    Creating library E:\e900\DV900\lib32\CALLWS.lib and object E:\e900\DV900\lib32\CALLWS.exp
    LINK : fatal error LNK1104: cannot open file 'CALLWS.dll'
    Microsoft (R) Manifest Tool version 5.2.3790.2075
    Copyright (c) Microsoft Corporation 2005.
    All rights reserved.
    mt.exe : general error c10100b1: Failed to load file "E:\e900\DV900\bin32\CALLWS.dll". The system cannot find the file specified.
    Adjusting DLL load addresses . . .
    ************Build Finished************
    I don't understand nothing, because the path is totally right.
    Any help is appreciated!
    Thank you and regards.
    Edited by: user12085357 on 29-abr-2010 2:55
    Edited by: user12085357 on 29-abr-2010 3:02

  • Consume conversational web services from WebLogic

    hi all,
    any one tried to consume conversational async webservices from weblogic 7 ? or tried to create conversational async webserices on sunONE ?
    I am looking for standards to create interoperable async webservices which will use callbacks on the client side for notifications. Please advise...

    Hi Raja,
    Following patterns will likely give you a good idea of the type of problems you will have to address in real-world apps involving interactions with async Web services. I would encourage you to make the leap to studying BPEL4WS (and possibly WS-Transaction as well if you have true transactional requirements).
    App servers are at the core synchronous engines while BPEL4WS calls for asynchrony top to bottom. Saying that, it is possible to create an orchestration engine (as a J2EE container) on top of an app server to deliver orchestration infrastructure that deals with asynchrony, exception handling, long-running transactions, to enable developers to focus on the orchestration logic (i.e. BPEL) rather than re-invent the infrastructure wheel for each application built.
    Take a look at the Q&A content here, hope it helps.
    http://searchwebservices.techtarget.com/ateAnswers/0,289620,sid26_cid492833_tax292928,00.html
    Doron\

  • Consuming HTTPS Web Service

    In our application, we are trying to consume a web service that only supports HTTPS (https://gatewaybeta.fedex.com/web-services) and are having trouble getting Apex to function properly. In fact, when we try to finish defining the web service, Apex (Apache) gives us a HTTP 400 (Bad Request) error. We think this might be related to the web service only supporting HTTPS, but not sure.
    I know we need a wallet for the PL/SQL engine to use to connect to HTTPS, but I can't find any documentation on putting that together (for Apex, I've done it using UTL_HTTP).
    Has anybody else encountered this issue? If so, how did you resolve it?
    Thanks in advance,
    -djbckr

    Same issue here.
    I did a little research and looked at this thing called "on-line help" :)
    First thing you've got to do is set up an SSL Wallet. See the Oracle Database Advanced Security Administrator's Guide at http://www.oracle.com/pls/db111/lookup?id=ASOAG160 or the one specific to your version of the database.
    We just re-used the wallet we set up for our our code that calls utl_http and dbms_ldap over SSL. Our wallet is empty except for the CA root signing certificates for the CA that signed our app server's ssl cert. In short if you can get utl_http to fetch via SSL your web services WSDL file, then I think you'll be OK.
    Then you need to configure the wallet for apex to use:
    1) login to internal workspace as admin
    2) Click "manage service"
    3) Click Instance Settings
    4) Under the wallet setting put the path to your wallet using file:/path/to/your/wallet/directory format
    5) Under the wallet setting enter your wallet password and check the box to "change the wallet password". This doesn't actually change the password (I don't think) but rather it sets the password setting somewhere inside the depths of Apex's configuration.
    6) Apply changes.
    7) Logout as admin
    Now set up your web service:
    1) Go back to your workspace and application and click "Shared Components" then "Web Service References".
    2) Click "Create Web Service Reference"
    3) We don't use UDDI so I clicked no on search a uddi registry...
    4) I pasted in my https://xxxxx/service/serviceendpoing?WSDL url in the WSDL location field. We don't use basic auth so left that blank.
    5) When I clicked "Next" Apex had consumed the WSDL url and shown me my parameters which is farther along than I got when the wallet wasn't configured. At least it is looking at the WSDL over https!
    6) You are on your own after this as I'm learning with you...
    By the way, I found all the documentation for this when I clicked the "WSDL Location" label in step 4 of configuring my web service. It pulled up context sensitive help (imagine that ;) and in the context sensitive help window there was a "Help" link. Clicked that and it took me to the "Advanced Programming Techniques" in the Apex "Application Builder's Guide".
    Thanks apex developers for the good documentation!
    Hope this helps!
    PS I forgot to mention I'm using Apex 3.2 on 11gEE.
    Edited by: mcallister on Jun 3, 2009 11:25 AM

  • Problem in consuming the Web service throgh "Onload" of the applicatuon.

    hi , when i consume web service "onload" of the application ,
    i am unable to retrive the last result .
    but when i consume the same web service "onclick" event of a
    button , i am able to get the last result.
    Can i consume a web service from "onload" of the application
    Any suggetions or workaround will be appriciated.
    Thanks in advance.
    Regards
    Shashi

    you need to register an result handler as requests are async
    so when you the load the results are not instant so declare a
    result handler and get the results from there

  • Can I consume Asynchronous Web Services from WD?

    We have some asynchronous web services running on XI, my doubt is if I can consume those web services in my WebDynpro application...
    Any ideas... thanx in advance.
    JV

    Hi Raja,
    Following patterns will likely give you a good idea of the type of problems you will have to address in real-world apps involving interactions with async Web services. I would encourage you to make the leap to studying BPEL4WS (and possibly WS-Transaction as well if you have true transactional requirements).
    App servers are at the core synchronous engines while BPEL4WS calls for asynchrony top to bottom. Saying that, it is possible to create an orchestration engine (as a J2EE container) on top of an app server to deliver orchestration infrastructure that deals with asynchrony, exception handling, long-running transactions, to enable developers to focus on the orchestration logic (i.e. BPEL) rather than re-invent the infrastructure wheel for each application built.
    Take a look at the Q&A content here, hope it helps.
    http://searchwebservices.techtarget.com/ateAnswers/0,289620,sid26_cid492833_tax292928,00.html
    Doron\

  • How to consume a web service provided by third party system from SAP system

    Hi Friends,
    Could any of you provide me a clear picture on how to consume a web service from SAP system and is provided by a third party system?
    Do we get an URL to create a client proxy for consuming the web service?
    Thanx in advance,
    Ram

    Hi Ram,
    of course you cannot supply the WSDL URL. Inside the WSDL (just view it in your browser) you find (usually but not necessary) towards the end something like
    <soap:address location="http://www.weather.gov/forecasts/xml/SOAP_server/ndfdXMLserver.php"/>
    which is the actual adress of the service.
    An example service can be found here:
    <a href="http://www.weather.gov/xml/">National Digital Forecast Database</a>
    containing the WSDL URL at
    <a href="http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl">this address</a>.
    You might also want to browse for the amazon webservices which allow you to embed queries against amazon into your application.
    have fun,
    anton

  • No result while creating a service consumer with Web Service Wizzard

    Hi,
    I've tried to create a service consumer with Web Service Wizzard in SE80 by using URL/HTTP Destination but nothing happens. After the popup with logondata for the WSDL I get the CRM start screen and nothing has been created in the given package.
    technical details:
    I use a CRM 5.0 system with SP15 (SAPKB70015).
    I created the provider service at a 7.10 system with SP5 (SAPKB71005) via SPROXY, SOAMANAGER and WSPUBLISH and get the WSDL-URL from Service Registry.
    The Service Registry of the 7.10 system serves as central Service Registry.
    Has anybody an idea ?
    Christoph

    Guy,
    Thanks for your reply.
    This problem has been solved. Since I haven't turned on everything that to use transaction SOAMANAGER needs. After complete the switch-on works, the problem never happens again.
    Thanks again.

  • Error when consuming a web service in CF 11

    I am consuming a web service in ColdFusion what was written in .NET.  Some methods of the web service work fine, but some we get the below error.  We have identified the issue is the name of one of the properties in the web service appears to be the issue.  The property name is ID.  This is a very common property name so I would think someone has run across this before.  It appears that maybe ID is a default property for Axis?  I can dump the method that works and I see there is a getID() method with a return type of org.apache.axis.types.Id.
    If we change the name of the property to something other than ID it works, but this will cause us to refactor a lot of code.
    Here is the error I get when I try to call GetRoles method, which contains an ID property:
    Cannot perform web service invocation GetRoles. The fault returned when invoking the web service operation is:
    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: org.xml.sax.SAXException: For input string: "i1"
    java.lang.NumberFormatException: For input string: "i1"
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: For input string: "i1"
    java.lang.NumberFormatException: For input string: "i1"
    at org.apache.axis.encoding.ser.BeanDeserializer.onStartElement(BeanDeserializer.java:462)
    at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:393)
    at org.apache.axis.encoding.ser.BeanDeserializer.startElement(BeanDeserializer.java:154)
    at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java: 1048)
    at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
    at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
    at org.apache.axis.message... ''
    I am running CF 11 Update 4.

    I am not passing any parameters to the method (it has no parameters).  On the ColdFusion side I do not use i1 anywhere.  I will check with the .net developer on Monday to see if he is using it anywhere in his code.  If he is he is using in consistently as the only methods that work from his service are those that do not have an ID property.  All services with an ID property give me the same error message.

  • Consuming External Web Services in Web Dynpro Java

    Hi All,
    I an trying to consume external web service in Web dynpro java using Adaptive Web Service Model.
    But getting below mentioned error while executing the web service
    Exception on execution of web service with WSDL URL 'D:\Web Service Project\CurrencyConvertor.asmx.xml' with operation 'ConversionRate' in interface 'CurrencyConvertorSoap'
    Steps i followed are as below:
    1. Created  Adaptive Web Service Model for this i select WSDL source as "Local File System or URL"
    In next step i select No logical destination radio button and click on next
    In next step, browse the WSDL file and successfully import the WSDL file.
    2. After successfully importing the WSDL file i wrote below code in Init method:
    WebModel modelweb = new WebModel();               
    Request_ConversionRate reqConversion = new Request_ConversionRate(modelweb);
    ConversionRate conversion= new ConversionRate(modelweb);
    reqConversion.setConversionRate(conversion);
    wdContext.nodeRequest_ConversionRate().bind(reqConversion);
    3.After that execute the model - code is given below :
        IWDMessageManager manager = wdComponentAPI.getMessageManager();
        try
          wdContext.currentRequest_ConversionRateElement().modelObject().execute();
          wdContext.nodeResponse().invalidate();
          wdContext.nodeConversionRateResponse().invalidate();
        catch(Exception e)
          manager.reportException(e.getMessage(), false);
    Please let me know how to resolve this.
    Thanks
    Sandy

    Hi,
    You need to use destinations for metadata and modeldata.
    Configure those destination in Visula admin.
    you can refer to following link.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/b2bc0932-0d01-0010-6d8e-cff1b2f22bc7
    Regards,
    Shruti.

  • Handling of SOAP Faults in SOAP Clients consuming PI Web services

    Hi there,
    the following is in regards to SOAP fault error handling in a SOAP client that consumes a Web Service published by PI.
    I have been reading a number of threads and blogs in regards to this topic and I am still left with some open questions which I hope to get some final answersclarifications through this thread.
    In particular the blogs
    Handling Web Service SOAP Fault Responses in SAP NetWeaver XI      - Handling Web Service SOAP Fault Responses in SAP NetWeaver XI
    XI: Propagation of meaningful error information to SOAP Client     - XI: Propagation of meaningful error information to SOAP Client
    have caused by attention.
    Both of these threads are realating to the Fault Message type one can use to return errors back to a SOAP Client (.Net, Java, etc.).
    In our scenario we published a number of Web Services through PI that provide functionality to integrate with an R3 back-end system using inbound ABAP Proxies.
    The services are standardised and will be consumed by a number of .NetJava applications and systems. The reason for the use of ABAP proxies is the customer specific application logic that is executed in the backend system. The Web services are synchronous and don't use ccBPM in the middle. Transformations are performed in PI combined with various lookups to set default values before the message is passed into the ABAP Framework of the R3 back-end system. The lookups are done against the R3 back-end system using the PI RFC Lookup feature.
    The inbound proxies currently return application errors as part of the response message back to the SOAP client. For more critical errors we introduced the use of Fault message types as the method to return the information back to the SOAP Client. This is all working satisfactory.
    The questions I have are as follows.
    1. When an error occurs at the IE level (e.g. mapping error), ABAP Proxy framework level (e.g. conversion from XML to ABAP format) or Adapter Framework level (Adapter releated error) a different SOAP fault message structure is returned to the SOAP Client than the one    used for the application errors. The SOAP fault message structure used in this case is the standard SOAP fault used by PI to return system errors back to the caller. For those SOAP fault messages there is no payload generated that could be mapped to the SOAP fault structure used for the application errors. This would be preferrable as there would be only one Fault message structure used for both inbound ABAP proxy generated fault messages and PI generated fault messages.
    Also the error messages generated by PI can be quite cryptic and difficult to interpret at the client end and could be filtered     ranslated during message mapping if the payload of the PI generated SOAP fault message could be accessed in a message mapping.
    Point 3 of the above thread 2759 indicates that this would be possible but doesn't outline how. Could somebody please clarify this for me as I don't believe that this is really possible ???.
    My idea instead was to use the PI SOAP fault message structure to also return application errors. Therefore I would create a Fault message type that matches the PI SOAP fault structure. This would enable the SOAP Client to handle only one SOAP Fault error structure. Would that be something to look into instead ?????.
    2. We have been looking at using the integrated WEB AS SOAP adapter instead of using the AF Sender SOAP adapter. While playing with this we encountered differences in the content returned through the SOAP fault generated by PI. A sample is below. Shouldn't the content of these SOAP faults be the same if the error that caused it is the same. Also the SOAP fault returned by the IE SOAP adapter is much more    useful in this particular case. Both errors below are the same, a conversion error from XML to ABAP took place in the inbound ABAP proxy framework of the back-end system.
    SOAP fault returned when using SOAP Sender adapter of AF
    <!see the documentation>
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>Server Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context>XIAdapter</context>
                   <code>ADAPTER.JAVA_EXCEPTION</code>
                   <text>com.sap.aii.af.ra.ms.api.DeliveryException: XIProxy:PARSE_APPLICATION_DATA:
         at com.sap.aii.adapter.xi.ms.XIEventHandler.onTransmit(XIEventHandler.java:455)
         at com.sap.aii.af.ra.ms.impl.core.queue.consumer.CallConsumer.onMessage(CallConsumer.java:134)
         at com.sap.aii.af.ra.ms.impl.core.queue.Queue.run(Queue.java:916)
         at com.sap.aii.af.ra.ms.runtime.MSWorkWrapper.run(MSWorkWrapper.java:56)
         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:102)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)</text>
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    SOAP fault using integrated SOAP adapter of PI IE
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>System Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context/>
                   <code>ABAP.PARSE_APPLICATION_DATA</code>
                   <text>Error during XML => ABAP conversion (Request Message; error ID: CX_ST_DESERIALIZATION_ERROR; (/1SAI/TXSBE20FF604BAFEF8D990A XML Bytepos.: 564  XML Path: ns1:CreatePORequest(1)POHEADER(2)COMP_CODE(1) Error Text: Data loss occurred when converting ############################## Kernel ErrorId: CONVT_DATA_LOSS))</text>
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    I have been reading threads for hours without being able to find one that answers questions 1 or provides a blog that outlines the approach one should take for error handling in SOAP clients that consume PI Web Services (and covers both PISystem generated faults and faults raised in Proxies).
    There may already be a blog or thread and I just missed it.
    Any comments are welcome.
    Thanks. Dieter

    Hi Dieter,
    As Bhavesh already mentioned fault messages are used for application errors. The same is described in SAP XI help:
    http://help.sap.com/saphelp_nw04/helpdata/en/dd/b7623c6369f454e10000000a114084/frameset.htm
    In case of system error (e.g. field length too long in proxy call or error in XI/PI mapping) there seems to be no standard way of handling it and propagating the response to the consumer of webservice.
    Each system error is not recognized by SOAP adapter and SOAP adapter exception is raised.
    The only bizzare solution that I can see is developing an adapter module and transport wrong message to standard fault message before delivering it to adapter engine:
    http://help.sap.com/saphelp_nw04/helpdata/en/a4/f13341771b4c0de10000000a1550b0/frameset.htm
    Kind regards,
    Wojciech
    btw nice thread

Maybe you are looking for