Best practice for consuming web services

Hi
we are consuming web service in orchestration by "Add Generated Item".By using this option it creates 1 orch,1xsd file and some bindings.
we have different projects for schemas,maps and orchestration under our solution in visual studio.
Now i need to know that what will be the best practice for consuming web service in orchestration i mean in which project should i use "add generated item" (in orchstration project or in schemas project) coz it generates both 1 orch and 1
schema.
thanks

From a service orientation perspective you should abstract the service artifacts from the other artifacts. Otherwise it will be very difficult to update the service interface without affecting the other artifacts. For example you don't want to have to redeply
your entire application if only one field changes in the service you consume.
So I typically generate the items, remove the unnecessary stuff, and put them in a separate project.
Depending on the control you have over the services you want to consume, it would even be better to create another layer of abstraction. By that I mean create your own interface (schema) and map that one to the one the service exposes. This basically
is only necessary if you consume external services that are beyond your control. By abstracting the interface it exposes, you limit the impact of changes of that interface on the rest of your system. All changes are abstracted behind your own interface.
If you consume internal services, you can probably control the way the interface is defined. In a service oriented world all internal services expose a well known interface, based on the domain objects you have within your organisation.
Jean-Paul Smit | Didago IT Consultancy
Blog |
Twitter | LinkedIn
MCTS BizTalk 2006/2010 + Certified SOA Architect
Please indicate "Mark as Answer" if this post has answered the question.

Similar Messages

  • Best Practice for Securing Web Services in the BPEL Workflow

    What is the best practice for securing web services which are part of a larger service (a business process) and are defined through BPEL?
    They are all deployed on the same oracle application server.
    Defining agent for each?
    Gateway for all?
    BPEL security extension?
    The top level service that is defined as business process is secure itself through OWSM and username and passwords, but what is the best practice for security establishment for each low level services?
    Regards
    Farbod

    It doesnt matter whether the service is invoked as part of your larger process or not, if it is performing any business critical operation then it should be secured.
    The idea of SOA / designing services is to have the services available so that it can be orchestrated as part of any other business process.
    Today you may have secured your parent services and tomorrow you could come up with a new service which may use one of the existing lower level services.
    If all the services are in one Application server you can make the configuration/development environment lot easier by securing them using the Gateway.
    Typical probelm with any gateway architecture is that the service is available without any security enforcement when accessed directly.
    You can enforce rules at your network layer to allow access to the App server only from Gateway.
    When you have the liberty to use OWSM or any other WS-Security products, i would stay away from any extensions. Two things to consider
    The next BPEL developer in your project may not be aware of Security extensions
    Centralizing Security enforcement will make your development and security operations as loosely coupled and addresses scalability.
    Thanks
    Ram

  • What is the best practice for developing web service?

    Hi All,
    I'm a newbee to web services...
    I was wondering what would be the best approach in developing a web service,
    using tools or programmatic approach?
    If I use WebLogic Workshop, am I tied to a vendor?
    Is it possible for me to develop web services using workshop and deploy in
    another app server..?
    I would appreciate if somebody could give me a pointer to start.
    I have already referred BEA's docs.
    I'm still confused on a good starting point on the best approach to develop
    protable web services.
    Thanks in advance for any inputs.
    K K

    K K-
    You have a very valid point on the simplify or complicate matters. If you are
    going for clean and not-so-time-centric code, then there are several different
    programs and packages out there you can choose from.
    Since you are specialized in J2EE, than the Sun package may be what you are looking
    for. BEA's classes simplify much of the work you will be doing, but you could
    emulate their classes or extend yours above the functions provided in theirs.
    It all boils down to how much work are you willing to do.
    If you are asking for more detailed, coding 'Design Patterns' to utilize, I would
    wait for a few more posts from other folks as my work often requires me to utilize
    the tools provided.
    Sincerely,
    Eric Ballou
    "K K" <[email protected]> wrote:
    Eric,
    Thanks for the response.
    I was also looking at Sun's WSDP 1.1, which is more programmatic approach.
    Some how, I feel being a J2EE developer, I should go on the direction
    of the
    programmatic approach.
    Using the tools could simplify or complicate things. Also, the Workshop
    samples import all weblogic specific packages.
    My code looks so dirty with many vendor specific packages being imported.
    Could you give me your suggestions for a clean and neat approach?
    I would personally prefer to avoid the quick and dirty approach.
    Thanks again.
    "Eric Ballou" <[email protected]> wrote in message
    news:[email protected]...
    K K-
    The best approach in developing portable web services is knowing whatyou
    are
    planning on using them for as well as how much is willing to be spent,etc.
    BEA's Workshop is portable to other frameworks, but the ease ofintegrating a
    developed client or a developed server can very greatly. Even moreof an
    issue
    is migration from one framework to another. If you choose to developin
    Workshop
    and your company later deploys .Net solutions, some of your work mayhave
    to be
    redone unless the company is willing to keep portions of the 'old'system
    around
    until new versions of the service are available. However, Workshophas
    several
    ant tools available that would assist you in deploying to other appservers or
    even a stand-alone application should you need cross framework abilities.
    If you are just starting out in web services, http://www.webservices.org
    is a
    good place to start checking out vendors in the space.
    Sincerely,
    Eric Ballou
    "K K" <[email protected]> wrote:
    Hi All,
    I'm a newbee to web services...
    I was wondering what would be the best approach in developing a web
    service,
    using tools or programmatic approach?
    If I use WebLogic Workshop, am I tied to a vendor?
    Is it possible for me to develop web services using workshop and deploy
    in
    another app server..?
    I would appreciate if somebody could give me a pointer to start.
    I have already referred BEA's docs.
    I'm still confused on a good starting point on the best approach todevelop
    protable web services.
    Thanks in advance for any inputs.
    K K

  • Pros & Cons for consuming web services in ABAP using ABAP PROXY

    Hi,
    Other then performence  is there any other disadvantages like security,etc for consuming web services in ABAP using ABAP proxy?
    I really appreciate if some one provide the more details(Pros & Cons ) regarding cosuming web services and I also want to know is there any other way to consume web services in ABAP.
    Thanks.

    <i> is there any other way to consume web services in ABAP</i>
    you can use cl_http_client class to make your program to act as http client and post the soap message too webservice. This way you dont need to generate proxy, but you should know the soap message format.
    Regards
    Raja

  • Is there a list of best practices for Azure Cloud Services?

    Hi all;
    I was talking with a Sql Server expert today and learned that Azure Sql Server can take up to a minute to respond to a query that normally takes a fraction of a second. This is one of those things where it's really valuable to learn it when architecting as
    opposed to when we go live.
    Cloud Services are not Sql Server (obviously) but that led to the question - Is there a list of best practices for Azure Cloud Services? If so, what are they?
    We will be placing the cloud services in multiple datacenters and using traffic manager to point people to the right one. The cloud service will set between an IMAP client & server, pretending to be the mail client to the server, and the server to the client.
    Mostly it will pass all requests & responses across from one to the other.
    thanks - dave
    What we did for the last 6 months -
    Made the world's coolest reporting & docgen system even more amazing

    hi dave,
    >>Cloud Services are not Sql Server (obviously) but that led to the question - Is there a list of best practices for Azure Cloud Services? If so, what are they?
    For this issue, I have collected some blogs and document about best practices for azure cloud service, you can view them, but I am not sure they are your need.
    http://msdn.microsoft.com/en-us/library/azure/xx130451.aspx
    http://gauravmantri.com/2013/01/11/some-best-practices-for-building-windows-azure-cloud-applications/
    http://www.hanselman.com/blog/CloudPowerHowToScaleAzureWebsitesGloballyWithTrafficManager.aspx
    http://msdn.microsoft.com/en-us/library/azure/jj717232.aspxhttp://azure.microsoft.com/en-us/documentation/articles/best-practices-performance/
    >>The cloud service will set between an IMAP client & server, pretending to be the mail client to the server, and the server to the client. Mostly it will pass all requests & responses across from one to the other.
    For your scenarioes, If you'd like to communicate with each instances, I recommend you refer to this document (
    http://msdn.microsoft.com/en-us/library/azure/hh180158.aspx ). And generally, if we want connect the client to server on Azure, the service bus is a good choice (http://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-multi-tier-app-using-service-bus-queues/
    If I misunderstood, please let me know.
    Regards,
    Will
    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.

  • Best Practice for embedding webi reports in hyperlinks..

    SAP Community
    What is the best practice for embedding hyperlinks (email) from webi and sending to a user?so the users can quickly consume the report with minimal effort (click link and launch infoview/report).
    John

    As mentionned already,  BI has it's own inbox, and/or SMTP integration for broadcasting.
    Else, if you go to Folders, right click on your report instance, then select "Copy URL" (or 'docuemnt link' i cannot remember the exact term.)  - that woudl give you an open document link to invoke the viewer .
    Regards,
    H

  • Code for consuming web services in ABAP

    *& Report  ZVM_GET_CITY_TIME
    REPORT  zvm_get_city_time.
    PARAMETERS:
      p_city TYPE zget_city_time_soap_in-city.
    DATA:
      cl_proxy TYPE REF TO zco_time_service_soap,
      input    TYPE zget_city_time_soap_in,
      output   TYPE zget_city_time_soap_out,
      systerr  TYPE REF TO cx_ai_system_fault,
      w_error  TYPE c.
    TRY.
        CREATE OBJECT cl_proxy
          EXPORTING
            logical_port_name = 'ZCO_TIME_SERVICE_SOAP'.
      CATCH cx_ai_system_fault.
        CREATE OBJECT systerr.
        WRITE:/ 'Error in creating object - ', systerr->errortext.
    ENDTRY.
    TRY.
        input-city = p_city.
        CALL METHOD cl_proxy->get_city_time
          EXPORTING
            input  = input
          IMPORTING
            output = output.
      CATCH cx_ai_system_fault.
        CREATE OBJECT systerr.
        WRITE:/ 'Error in calling the method - ', systerr->errortext.
        w_error = 'X'.
    ENDTRY.
    CHECK w_error NE 'X'.
    SKIP.
    WRITE:/ 'The current time in ', p_city, ' is ',
            output-get_city_time_result.

    <i> is there any other way to consume web services in ABAP</i>
    you can use cl_http_client class to make your program to act as http client and post the soap message too webservice. This way you dont need to generate proxy, but you should know the soap message format.
    Regards
    Raja

  • What is best practice for calling XI Services with Web Dynpro-Java?

    We are trying to expose XI services to Web Dynpro via "Web Services".  Our XI developers have successfully generated the WSDL file(s) for their XI services and handed off to the Web Dynpro developers.
    The Java developers put the WSDL file to their local PC's and import as "Adaptive Web Services" data models.  When the application is constructed and deployed to our development box, the application abends because the J2EE server on that box cannot locate the WSDL file at runtime (it was on the developers box at, say, "C:\temp\" and that directory does not exist on the dev server).
    Since XI does not have a way of directly associating the generated WSDL file to the XI service, where is the best place to put the WSDL so it is readable at design time and at run time?  Also, how do we reconcile that we'll have 3 WSDL files for each service (one for Dev, one for QA and one for Prod) and how is the model in Web Dynpro configured so it gets the right ome?
    Does anyone have any good guide on how to do this?  Have found plenty of "how to consume a Web Service in Web Dynpro" docs on SDN, but these XI services are not really traditional Web Services so the instructions break down when it comes time to deploy.

    HI Bob,
    As sometimes when you create a model using a local wsdl file then instead of refering to URL mentioned in wsdl file it refers to say, "C:\temp" folder from where you picked up that file. you can check target address of logical port. Due to this when you deploy application on server it try to search it in "c:\temp" path instead of it path specified at soap:address location in wsdl file.
    Best way is  re-import your Adaptive Web Services model using the URL specified in wsdl file as soap:address location.
    like http://<IP>:<PORT>/XISOAPAdapter/MessageServlet?channel<xirequest>
    or you can ask you XI developer to give url for webservice and username password of server

  • What is the best practice to consume RMI Service

    hi ,
    i have rmi solution client server
    i want to know which one is the best practice and more stable approach from one of the below.
    1. initialize / consume the service once only
    maybe can do it in static block
    Example : static {
    //some object = Naming.lookup("rmi://192.168.0.130/RMIServer");
    2. Everytime client perform some activity and need to invoke rmi server
    then consume the service
    Example :
    public String getQuote(String quoteNumber){
    }

    Esentially both.
    Each time you do #2, but if it fails, then you do #1. You never know when its going to fail. failure is a normal part of TCP communication so be prepared to handle it gracefully as if its not even a failure.

  • Need best-practice for Kodo web apps

    Please forgive this question from a JDO newbie if it is already answered
    elsewhere (if so please let me know, I can't find it)...
    We are building an enterprise application consisting of multiple
    cooperating web-apps, one servlet per web app. Following the classic MVC
    pattern (using Struts) we have the servlets operating as controllers that
    concurrently field requests from multiple users. In response to each
    concurrent request the servlets instantiate the corresponding command
    instances to process the requests. The command objects then interact with
    a common shared model implemented as a collection of persistent "model"
    objects and business rules. Finally, the commands then create java beans
    that are sent to JSPs for display to the users.
    No problem thus far - we have successfully used Kodo to implement the
    architecture described above. To date we have used a single persistance
    manager (PM) that is global to the servlets, existing as long as the
    application is running. Although this works, I believe that it won't
    scale for concurrent access by multiple users (correct me if I am wrong)
    since a PM has one and only one database connection. Our concern however
    is regarding persistance managers verses multiple user concurrent access
    to the common model (i.e., one user can update information which is then
    displayed to all other users).
    I believe the answer is in using multiple PMs, but how should the PMs be
    allocated? One per user stored in the user's session? If so, how do
    multiple users share access to the same model instances? My mental model
    is that a PM is like a "sandbox" - objects in one sandbox cannot see
    objects existing in another PM's "sandbox". Is that true?
    I know this is a long winded question. I was hoping to provide enough
    context so someone could suggest a PM utilization that scales well for
    applications like ours.
    Any help/suggestions is GREATLY appreciated!
    Steve

    You can transportable tablespace for the database tier node.
    https://blogs.oracle.com/stevenChan/entry/10gr2_xtts_ebs11i
    https://blogs.oracle.com/stevenChan/entry/call_for_xtts_eap_participants
    For the application tier node, please see:
    https://blogs.oracle.com/stevenChan/entry/migrate_ebs_apptiers_linux
    https://blogs.oracle.com/stevenChan/entry/migrating_oracle_applications_to_new_platforms
    Thanks,
    Hussein

  • WebCenter Sites : Consume Web Services and apply templates

    Hi,
    What is the best approach to consume Web Services or REST Service with Sites?
    The idea is to consume some eServices personalized for a connected user and apply different presentation templates for those services to add to Sites pages.
    Any Best practices here ?
    Regards
    Jo

    For consuming SOAP services inside a delivery template, there used to be the webservices:invoke tag but it was deprecated in version 7.6, and was generally not recommended to use anyway. There are no new tags for consuming SOAP or REST webservices, customers asking to do that are generally advised to reuse the existing libraries and write their client code in java, for example directly in an element/template or custom tag that you use in elements/templates. For performing simple REST queries you could use ics.ReadPage or httpclient.
    Sites (was CS) comes with jars for handling SOAP and REST services, such as saaj, xmlbeans, jaxrpc, and jersey. You can use these, but if you run into bugs or limitations with the provided versions be aware that upgrading these jars may break Sites. And similarly, upgrading Sites may change these jars and so break your client code.
    Phil

  • Consuming Web Services in 11.2 does not work (UTL_DBWS)

    Hello
    i read some documents for consuming web services on the internet , but i get an error when i call add_numbers function as follows:
    i connected on WSUSER , then
    SQL> select add_numbers(1,3) from dual;
    The Error message is:
    ERROR at line 1:
    ORA-29532: Java call terminated by uncaught Java exception:
    java.lang.IllegalAccessException: java.lang.ExceptionInInitializerError
    ORA-06512: at "WSUSER.UTL_DBWS", line 193
    ORA-06512: at "WSUSER.UTL_DBWS", line 190
    ORA-06512: at "WSUSER.ADD_NUMBERS", line 25"
    I use the following steps to setup the UTL_DBWS :
    1-     Create new user 'WSUSER'
    2-     Run the UTL_DBWS scripts ( utl_dbws_decl.sql , utl_dbws_body.sql) on WSUSER.
    3-     Execute this command
    loadjava -u scott/tiger -r -v -f -genmissing dbwsclientws.jar dbwsclientdb11.jar
    4-     Log in as sys and grant these privileges to our new user:
    execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','http.proxySet','write');
    execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','http.proxyHost', 'write');
    execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','http.proxyPort', 'write');
    execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission', 'accessClassInPackage.sun.util.calendar','');
    execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission','getClassLoader','');
    execute dbms_java.grant_permission('WSUSER','SYS:java.net.SocketPermission','*','connect,resolve');
    execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','*','read,write');
    execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission','setFactory','');
    execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission', 'createClassLoader', '' )
    5-     Create add_numbers function on wsuser to test utl_dbws:
    CREATE OR REPLACE FUNCTION add_numbers (p_int_1 IN NUMBER,
    p_int_2 IN NUMBER)
    RETURN NUMBER
    AS
    l_service UTL_DBWS.service;
    l_call UTL_DBWS.call;
    l_wsdl_url VARCHAR2(32767);
    l_namespace VARCHAR2(32767);
    l_service_qname UTL_DBWS.qname;
    l_port_qname UTL_DBWS.qname;
    l_operation_qname UTL_DBWS.qname;
    l_xmltype_in SYS.XMLTYPE;
    l_xmltype_out SYS.XMLTYPE;
    l_return NUMBER;
    BEGIN
    l_wsdl_url := 'http://www.oracle-base.com/webservices/server.php?wsdl';
    l_namespace := 'http://www.oracle-base.com/webservices/';
    l_service_qname := UTL_DBWS.to_qname(l_namespace, 'Calculator');
    l_port_qname := UTL_DBWS.to_qname(l_namespace, 'CalculatorPort');
    l_operation_qname := UTL_DBWS.to_qname(l_namespace, 'ws_add');
    l_service := UTL_DBWS.create_service (
    wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
    service_name => l_service_qname);
    l_call := UTL_DBWS.create_call (
    service_handle => l_service,
    port_name => l_port_qname,
    operation_name => l_operation_qname);
    l_xmltype_in := SYS.XMLTYPE('<?xml version="1.0" encoding="utf-8"?>
    <ws_add xmlns="' || l_namespace || '">
    <int1>' || p_int_1 || '</int1>
    <int2>' || p_int_2 || '</int2>
    </ws_add>');
    l_xmltype_out := UTL_DBWS.invoke(call_Handle => l_call,
    request => l_xmltype_in);
    UTL_DBWS.release_call (call_handle => l_call);
    UTL_DBWS.release_service (service_handle => l_service);
    l_return := l_xmltype_out.extract('//return/text()').getNumberVal();
    RETURN l_return;
    END;
    6-     Test the function
    Select add_numbers(1,2) from dual
    on the test i get the error message :
    ERROR at line 1:
    ORA-29532: Java call terminated by uncaught Java exception:
    java.lang.IllegalAccessException: java.lang.ExceptionInInitializerError
    ORA-06512: at "WSUSER.UTL_DBWS", line 193
    ORA-06512: at "WSUSER.UTL_DBWS", line 190
    ORA-06512: at "WSUSER.ADD_NUMBERS", line 25
    anyone have an idea to resolve this error .
    thanks alot

    Hi.
    Looking at the code, it seems it is my article you are asking about.
    http://www.oracle-base.com/articles/10g/utl_dbws10g.php
    I've just run through it on an 11.2 instance and it works fine for me.
    Make sure your server has access to the Internet and make sure the java classes are loaded successfully.
    Cheers
    Tim...

  • How to Consume Web Service?

    Hi Experts,
    I need to call a Function Module in the Exit.
    In this Function Create to write the code to consume web service created by third party.
    Then get the Data from there and uodate SAP
    Can u plz help me with the Steps Involved in this?

    Hi Mohsin,
    Please chk this link once for consuming web services..
    http://help.sap.com/saphelp_nw70/helpdata/en/bf/d005244e9d1d4d92b2fe7935556b4c/frameset.htm
    http://help.sap.com/saphelp_nw04/Helpdata/EN/b4/6aae409567942ae10000000a155106/content.htm.
    U shuld have authorizations for tcodes WSADMIN and SOAMANAGER for creating web services
    Hope it will be useful..
    Regards,
    Lakshman.
    Edited by: Lakshman N on Jan 13, 2009 12:06 PM

  • Best practice for integrating oracle atg with external web service

    Hi All
    What is the best practice for integrating oracle atg with external web service? Is it using integration repository or calling the web service directly from the java class using a WS client?
    With Thanks & Regards
    Abhishek

    Using Integration Repository might cause performance overhead based on the operation you are doing, I have never used Integration Repository for 3rd Party integration therefore I am not able to make any comment on this.
    Calling directly as a Java Client is an easy approach and you can use ATG component framework to support that by making the endpoint, security credentials etc as configurable properties.
    Cheers
    R
    Edited by: Rajeev_R on Apr 29, 2013 3:49 AM

  • Best practice for loading config params for web services in BEA

    Hello all.
    I have deployed a web service using a java class as back end.
    I want to read in config values (like init-params for servlets in web.xml). What
    is the best practice for doing this in BEA framework? I am not sure how to use
    the web.xml file in WAR file since I do not know how the name of the underlying
    servlet.
    Any useful pointers will be very much appreciated.
    Thank you.

    It doesnt matter whether the service is invoked as part of your larger process or not, if it is performing any business critical operation then it should be secured.
    The idea of SOA / designing services is to have the services available so that it can be orchestrated as part of any other business process.
    Today you may have secured your parent services and tomorrow you could come up with a new service which may use one of the existing lower level services.
    If all the services are in one Application server you can make the configuration/development environment lot easier by securing them using the Gateway.
    Typical probelm with any gateway architecture is that the service is available without any security enforcement when accessed directly.
    You can enforce rules at your network layer to allow access to the App server only from Gateway.
    When you have the liberty to use OWSM or any other WS-Security products, i would stay away from any extensions. Two things to consider
    The next BPEL developer in your project may not be aware of Security extensions
    Centralizing Security enforcement will make your development and security operations as loosely coupled and addresses scalability.
    Thanks
    Ram

Maybe you are looking for

  • Move from PC to Mac.. getting itunes to recognize library on EHD

    I just got a mac after our windows xp laptop was dropped down a flight of stairs and rendered useless. We had been storing our itunes library on an external hard drive. I've been reading up in help and this forum to figure out what I need to do to ge

  • Acrobat 9, shared reviews, and looking for "Save As" option

    Hello to all, I am wondering whether you can help with an annoyance in setting up shared reviews under Acrobat 9. Background: I first established shared reviews at my company using Acrobat 8 and our own internal WebDAV server. The setup worked, and s

  • Hanging Sessions in SAP ITSmobile/Standalone SAP ITS Gateway

    Hi, We have recently implemented SAP ITSmobile/Standalone SAP ITS gateway 6.20 (6200.1035.9507.7, build 1121051 - Single host) connected to LXE RDT device for warehouse operation. In warehouse forklift operators quite often lose connection to Wireles

  • My problems uploading

    cant upload videos to youtube or my website  they are mp4 standard video from my laptop hp envy says i need a differt format   ??  

  • My website page won't display in IE7 and goes wierd in Safari

    Hi, I am working on a website( www.katecornish.co.uk ) for somebody.  In Firefox the whole website looks fine.  In IE the 'Attic 09' page (www.katecornish.co.uk/Attic09.html) does not display at all, I just get a blank page.  In Safari this same page