Wednesday, May 14, 2014

Using Deployment Configuration Plan to change location for locally imported WSDL

There few software product available in market which exposes various functionalities as web service, however while directly providing that WSDL url in Web service adapter is not working. This requires you to import that concrete wsdl file in your local SOA Project and use that WSDL file to create WS Adapter to call the Service. However there other approaches are also there where you use Abstract WSDL file during design time and replace the binding during runtime. But here this post include detail only related replacing the binding details in locally stored concrete WSDL file.

While moving this application from one environment (dev) to other (test), you need to change the Service location which is available in local WSDL file so that web service can be called on correct environment.

Here are the steps you need follow to create a configuration plan which does that job at the time of deployment for you. Here we are assuming that you have you composite application already available where you have imported one concrete wsdl file and you have used it to create web service adapter.

In Application Navigator, go to your composite.xml file. Right click and generate configuration plan.

In Generated Configuration plan find the below entry.
<reference name="ExternalService">
         <!--Add search and replace rules for the binding properties-->
         <binding type="ws">
            <attribute name="port">
               <replace>http://www.abc123.com/update/#wsdl.endpoint(Update/UpdateSoap)</replace>
            </attribute>
            <attribute name="location">
               <replace>ExternalService.wsdl</replace>
            </attribute>
            <property name="weblogic.wsee.wsat.transaction.flowOption">
               <replace>WSDLDriven</replace>
            </property>
         </binding>
      </reference>
Update the location attribute value with actual corresponding url applicable for target environment.. Updated values are highlighted in bold.

<reference name="ExternalService">
         <!--Add search and replace rules for the binding properties-->
         <binding type="ws">
            <attribute name="port">
               <replace>http://www.abc123.com/update/#wsdl.endpoint(Update/UpdateSoap)</replace>
            </attribute>
            <attribute name="location">
               <replace>http://somehostname:8001/someServiceurl?WSDL</replace>
            </attribute>
            <property name="weblogic.wsee.wsat.transaction.flowOption">
               <replace>WSDLDriven</replace>
            </property>
         </binding>
      </reference>

Deploy the code to server using the created configuration plan and values for the service will be modified as per the config plan.