« Deploying BPEL Process to multiple environments using Ant | Main | Subtracting 2 dateTime values into a duration using XPath 2.0 »

Tokenizing WSDL imports while deploying to mutliple environments

Your BPEL Process might have one or more WSDLs that import another WSDL or an XSD from the server. This might result in hardcoded URLs in your WSDL - for instance


<definitions ....>


   <import namespace="http://www.oracle.com/po" location="http://localhost:7779/schemas/xml/createpo.wsdl"/>


  . ....


 </definitions>


 


When you are deploying to multiple environments, you might want to change the host and port for the URL that points to this WSDL, so that it points to the current server, or whatever you wish to use.


There is useful task named <customizeWSDL> that allows you to do this.


For this, follow the same instructions I had mentioned in the earlier blog entry for deployment to multiple environments,but with the following difference.


Instead of the <customize> task, use the <customizeWSDL> task


For e.g.


         <bpelc>


               . . . . .


          <customizeWSDL  inFile="${process.dir}/bpel/PurchaseOrder.wsdl" outFile="${process.dir}/bpel/PurchaseOrder.wsdl">    
           <wsdlImport namespace="http://www.oracle.com/po" locationURI="http://${deploy_host}:${deploy_port}/schemas/xml/createpo.wsdl"/>              
           </customizeWSDL>


        </bpelc>


 

Comments (7)

Vladimir Hlavacek:

The example build file for customizeWSDL task is not correct, something like this:

<customizeWSDL inFile="${process.dir}/bpel/PurchaseOrder.wsdl" outFile="${process.dir}/bpel/PurchaseOrder.wsdl">
<wsdlImport namespace="http://schemas.oracle.com/bpel/extension" locationURI="http://${deploy_host}:${deploy_port}/orabpel/xmllib/RuntimeFault.wsdl"/>
</customizeWSDL>

worked for me. Anyway thanks for pointing me in the right direction.

Ramkumar Menon:

thank you very much. Good to know that it was useful for you. I shall correct the post accordingly.

Ravi Kumar:

Hi Ram,
i need a help ..how do i customize the queue names inside my wsdl..

<jca:operation
InteractionSpec="oracle.tip.adapter.jms.outbound.JmsProduceInteractionSpec"
DestinationName="jms/collaxa/BPELTestQueue"
DeliveryMode="Persistent"
TimeToLive="0"
PayloadType="TextMessage"
OpaqueSchema="true" >
</jca:operation>

how do i change my queue destination names using ant...

regards,
ravi

Ramkumar Menon:

As far as I know, you need to either manually change it, or write your own script that performs the tokenization and replacement.

Knut Vatsendvik:

Hi Ramkumar,

Is it possible to use the customizeWSDL task with include statements as well?
(i.e. <include schemaLocation="http://localhost:8888/ResourceLib/Schema1.xsd" />?

Thanks,
Knut

Ramkumar Menon:

customizeWSDL unfortunately only allows customization of wsdl imports. schema imports and includes dont work.

Hi,

We need to change WSDL's endpoint based on ENV we going to deploy.

For instance We have WSDL with SOAP Location in BPEL process as file for DEV, QA as below

DEV Endpoint location:
http://dev02Ora123.admin.inf/siebel/SyncSystemIDsProcess


QA Endpoint location:
http://prod02Ora123.admin.inf/siebel/SyncSystemIDsProcess

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About This Entry

This page contains a single entry from the blog posted on July 18, 2007 2:27 PM.

The previous post in this blog was Deploying BPEL Process to multiple environments using Ant.

The next post in this blog is Subtracting 2 dateTime values into a duration using XPath 2.0.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type and Oracle