Pages

Sunday, February 7, 2010

Web service references and Soa configuration plan

With Soa Suite 11g you can off course use web service adapters in your composite application and use a configuration plan to change these reference endpoints, so it can work in production or acceptance environment. In a project I did this for a customer where I used composites as a reference and I just generated a configuration plan.
JDeveloper generates a plan and already did some good work for you by detecting the web service references. We only have to change the location attribute of the ws binding of this reference.
But when I deployed these composite to acceptance, I got deployment errors. Looking at the error in the soa_server1-diagnostic.log file I saw that it is complaining about there are more versions of one XSD. This can be true because the calling composite in development has a higher release than that of acceptance. Somehow there is still a reference to the development enviroment. Analyzing the soa project I saw there are some import references in the composite.xml
and in my mediator.wsdl. I also need to change these endpoints in the just generated configuration plan. First let change the import references of the composite.xml. JDeveloper already generated did some work for you.
Change this from
To this
And now I have to change the component WSDL's and XSD's of this composite application. JDeveloper already generates a wsdlAndSchema element with all your project files. When you add composite references or add components, you probably need to update your configuration plan.
So change this
to this.
and now you can deploy this composite to acceptance or production.

23 comments:

  1. Hi,
    Can we change any other text in the xsd files using the configuration plan. We have an issue where we are invoking stored procedures and references to the databse schema are created in xsd files. When we try to change them using the xsd files that doesnot work. Also, how can we avoid having references of database schemas in the BPEL code.

    Thanks
    Mayur

    ReplyDelete
  2. Hi,

    yes, just add your schema to the configuration plan. and change anything

    I don't think this is supported to remove schema name

    thanks

    ReplyDelete
  3. thanks for the information and it worked out.

    ReplyDelete
  4. I am not sure why this is not working for me to change schema location in wsdl:

    I have a wsdl file with the following info:





    I want to replace http://aaa.bbb.com:7001/Request.xsd with http://lcoalhost:8001/Request.xsd


    I have the following in config plan



    http://aaa.bbb.com:7001/Request.xsd
    http://lcoalhost:8001/Request.xsd




    When I validate plan, it stops at "Checking for replacement in wsdl and schema files " and I don't see this line as changed....

    ReplyDelete
  5. Hi,

    This plan only works when you deploy to the Soa Server. Don't know what Validation deployment plan does.

    thanks

    ReplyDelete
  6. Validate conf plan generates a log file with list of things that got changed and puts [old] and [new]. I see the changes when I have:

    jca property change:



    Because when I validate, I see:
    ....
    Checking for replacement in wsdl and schema files
    Replace Location in file test_db.jca
    connection-factory Old Value [ eis/database/db1 ]
    New Value [ 555 ]
    But not when


    validate plan remains at
    ..
    ....
    Checking for replacement in wsdl and schema files

    I also posted at: http://forums.oracle.com/forums/thread.jspa?threadID=1076868&stqc=true, but didn't receive any response.

    ReplyDelete
  7. Ok,

    when I want to change the import of a wsdl in the composite.xml it works

    Modified Composite [ CallingComposite ]
    Import Loations
    Old [ http://LAPTOPEDWIN.wh.lan:8001/soa-infra/services/default/Helloworld/BPELProcess1.wsdl ]
    New [ http://production.wh.lan:8001/soa-infra/services/default/Helloworld/BPELProcess1.wsdl ]
    No change in old and new value Mediator1.wsdl
    Service
    Service [ Mediator1_ep ]
    Service Bindings
    Binding [ ws ]
    Attribute name=port
    No change in old and new value http://xmlns.oracle.com/HelloWorld/CallingComposite/Mediator1#wsdl.endpoint(Mediator1_ep/execute_pt)
    Reference
    Reference [ HelloworldService ]
    Reference Bindings
    Binding [ ws ]
    Attribute name=port
    No change in old and new value http://xmlns.oracle.com/HelloWorld/Helloworld/BPELProcess1#wsdl.endpoint(bpelprocess1_client_ep/BPELProcess1_pt)
    Attribute name=location
    No change in old and new value http://LAPTOPEDWIN.wh.lan:8001/soa-infra/services/default/Helloworld/bpelprocess1_client_ep?WSDL
    ---End Match for composite [ CallingComposite ] in config plan---
    Checking for replacement in wsdl and schema files


    but do you want to change a xsd import.

    you can change import and references in composite and in wsdl / xsd in the wsdlAndSchema part.

    in the wsdlAndSchema part does it contain the wsdl reference
    if so why did you not copy the wsdl and xsd to your local project then this is not needed.

    thanks

    ReplyDelete
  8. Edwin,

    Edwin -"This plan only works when you deploy to the Soa Server. Don't know what Validation deployment plan does"

    Will it work if you deploy to JAR file and attach config plan from JDeveloper?

    Its not working for me. I opened jar (sar) file and my wsdl's still has the same values

    Thanks
    --Sree

    ReplyDelete
  9. Hi,

    in validate plan you can see what will be changed, in the output window you will see the changes else check your plan or generate a new one.

    thanks

    ReplyDelete
  10. Hi Edwin,
    In my composite.xml, I have the below snippet

    <reference name="ODIInvoke"
    ui:wsdlLocation="http://localhost:5001/axis2/services/OdiInvoke?wsdl">
    ....
    </reference>

    Can you please let me know , how I can change the wsdlLocation property of the reference. In my current config plan, I am changing the value of the location attribute (under binding). But it is not sufficient and it fails to deploy)

    ReplyDelete
  11. Hi,

    in the configuration plan you got 4 sections.

    The first is for the composite imports ( import element)
    2nd is services ( service element )
    3rd is references ( reference element )
    and at last wsdlAndSchema for every wsdl or xsd files in your project.

    you need to change the reference element.

    thanks

    ReplyDelete
  12. Hi Edwin,
    I am not able to change the value of ui:wsdlLocation on the reference element. The documentation only provides an example for changing the value of location attribute under the reference element.But I have managed to deploy the code in a slightly different way (ie) including the composite.xml in the list of files in the wsdlAndSchema block as a file to be searched and replaced.Not the neatest solution.But it works

    Regards,
    Prasanna

    ReplyDelete
  13. Hi Edwin,

    I am not able to change the value of ui:wsdlLocation on the reference element. The documentation only provides an example for changing the value of location attribute under the reference element.

    Could you please help me in changing the value for ui:wsdlLocation.

    Thanks and Regards,
    Sayama Ahmed

    ReplyDelete
  14. Hi,

    I need to check it out, I think it should work.

    else you can put the WSDL in the MDS and use oramds:/apps/...

    then you don't need to change ui:wsdlLocation

    thanks

    ReplyDelete
  15. After recreating the Web services exposed in weblogic 10.3 using BPEL we are gettig the following url ,
    http://localhost:7001/soa-infra/services/default/RCISServices/SearchServices?WSDL

    In Current PROD with weblogic integration 10.3 we created JWS and have exposed the url as follows,
    http://localhost:7001/RCISServices/SearchServices?WSDL

    As many clients are invoking our web service as a design bottle neck we need to have the same url as having now in PROD

    ReplyDelete
  16. Hi,

    You can use apache and do a rewrite of the url and forward to the soa suite.

    or use an OSB proxy service with this /RCISServices/SearchServices as endpoint and a business service which calls the bpel service with soa-direct or http transport.

    thanks.

    ReplyDelete
  17. Prasanna said...

    Hi Edwin,
    I am not able to change the value of ui:wsdlLocation on the reference element. The documentation only provides an example for changing the value of location attribute under the reference element.But I have managed to deploy the code in a slightly different way (ie) including the composite.xml in the list of files in the wsdlAndSchema block as a file to be searched and replaced.Not the neatest solution.But it works

    Regards,
    Prasanna
    July 6, 2010 12:31 PM

    Hi Prasanna

    can you please share how you managed to replace the ui:location im having the same issue

    ReplyDelete
  18. Hi,

    You should always put the reference wsdl in your project or mds
    then make a plan which only overrides location attribute with the new wsdl url of the bindind ws

    you can read this blog
    http://blogs.oracle.com/aia/entry/aia_11g_best_practices_for_dec

    thanks

    ReplyDelete
    Replies
    1. Hi Edwin,
      Can you please specify if configuration plan can change the endpoint of a local wsdl dynamically. For example, in my composite.xml I have a reference made from a local wsdl file HelloWorld_Dev.wsdl. when I generate the cfg_plan_dev.xml in the location section,it is pointing to the local wsdl file. Now my requirement is to generate cfg_plan_test.xml which will be used for TEST environment deployment. But in that case I do not want to generate another local wsdl file HelloWorld_TEST.wsdl. Is it possible to change the endpoint of the DEV environment specific wsdl to TEST environment specific wsdl in the HelloWorld_DEV.wsdl itself?
      The configuration Plan for DEV looks like this












      http://xmlns.oracle.com/P4UApplication/HelloWorldNew2/HelloBPEL#wsdl.endpoint(hellobpel_client_ep/HelloBPEL_pt)





      required






      http://xmlns.oracle.com/P4UBuilder/HelloWorldDev/HelloWorldBPEL#wsdl.endpoint(helloworldbpel_client_ep/HelloWorldBPEL_pt)


      helloworldbpel_client_DEV.wsdl


      WSDLDriven












      Delete
    2. Hi,

      soa plans are outside the sar so you can always change it without changing the sar , another way is to use binding token. like I described here
      http://biemond.blogspot.nl/2013/04/token-configurations-in-oracle-soa.html

      Thanks

      Delete
  19. good job!!! thx

    ReplyDelete
  20. Hi,
    I deployed my soa composite in soa server. After the deployment i checked the Endpoint location are updated to with some dumb values " !1.0.0-SNAPSHOT*soa_d35cfbb2-5af2-42bf-9413-2a63913f52a0". Due to this updated my services not working.
    Can you please tell what could to resolve this issue.

    Thanks.

    ReplyDelete
  21. How can i set to empty a composite preference?
    https://community.oracle.com/message/14104881#14104881

    ReplyDelete