Friday, 28 February 2014

Deploying Multiple SOA Composites through ANT

ANT Setup and Configuration:


1.       Download ant in your system and unzip to your local folder.
2.       Setup ANT HOME as environment variable and give path up to bin in path variable.

3.      Set JAVA HOME as well.



1.       Now you can check from command prompt  as below
Open command line enters as ant.


Build Property file:


build. properties is the file where you have to define the JDeveloper , your middleware home details and  Admin Server ,managed server credentials. 

# build file for DeployComposite

customProcessList=./customProcessList.txt

#composite.name=HelloWorld
#project.name=HelloWorld
# revision of the composite
#composite.revision=1
# Set oracle.home to <JDEV_HOME>/jdeveloper, where <JDEV_HOME> is JDEV # installation directory

wn.bea.home=D:/Oracle_FMW
oracle.home=D:/OracleJdeveloper/jdeveloper
java.passed.home=D:/OracleJdeveloper/jdk1.6.0_38
wl.home=${wn.bea.home}/wlserver_10.3

# soa-server side oracle home directory - needed for deployment plans
# and the weblogic sca library deployment

soa.server.oracle.home=D:/Oracle_FMW/Oracle_SOA

###### Deployment server connection information ###############
# the admin server connection information

admin.server.host=localhost
admin.server.port=7001

# the domain where soa infra is installed

server.domain.name=soaosb_domain

# connection information for the managed server, used for soa-deployment

managed.server.host=localhost
managed.server.port=8001

# User and credentials for the servers

server.user=weblogic
server.password=welcome1

# wls server where soa is targeted.

server.targets=soa_server1

Text Details:


Before using any of these Ant scripts that are related to code, you must create a text file.

Create this file place into your application directory where build files are present.

For example, the file may look like this:


This says that there are 2 composites to loop through; HelloWorld, Welcome. If deployed, the first 2
 will be deployed to the 'default' partition and a revision of '1.0'

Build.XML:

Here is main build.xml file it will compile the project and do the deployment in our target server.

<?xml version="1.0" encoding="UTF-8" ?>
<project name="AutomaticDeployment" default="deployComposites">
<echo message="entered screen"/>
<!-- build.properties -->
  <property environment="env"/>
  <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
  <taskdef resource="net/sf/antcontrib/antlib.xml" >
    <classpath>
      <pathelement location="${antcontrib}" />
    </classpath>
  </taskdef>
<property file="build.properties"/>
<!-- Add targets here -->
<target name="compile-package">
<property name="sca-inf.classes.dir" value="../SCA-INF/classes"/>
<mkdir dir="${sca-inf.classes.dir}"/>
<echo message="reached....${oracle.home}..........."/>
<ant antfile="${oracle.home}/bin/ant-sca-package.xml" target="package" inheritall="false">
<property name="oracle.home" value="${oracle.home}"/>
<property name="compositeDir" value="${basedir}/${project.name}"/>
<!-- needed for adf config -->
<property name="scac.application.home" value="${basedir}/${project.name}/.."/>
<!-- name of the composite -->
<property name="compositeName" value="${composite.name}"/>
<!-- revision of the composite -->
<property name="revision" value="${composite.revision}"/>
<!-- java.passed.home passed to scac, this property will be
overwritten to the env.JAVA_HOME if such env variable is defined in OS level-->
<property name="java.passed.home" value="${java.passed.home}"/>
<property name="wl_home" value="${wl.home}"/>
</ant>
</target>
<!--<target name="deploy" depends="compile-package">
<condition property="deploymentplan.name" value="null">
<not>
<isset property="${deploymentplan.name}"/>
</not>
</condition>
<echo>Deploying to http://${managed.server.host}:${managed.server.port}/soa-infra/deployer</echo>
<ant antfile="${oracle.home}/bin/ant-sca-deploy.xml" target="deploy"
inheritall="false">
<property name="user" value="${server.user}"/>
<property name="password" value="${server.password}"/>

 create the url for deployment

<property name="serverURL"
value="http://${managed.server.host}:${managed.server.port}/soa-infra/deployer"/>

location of the sar

<property name="sarLocation"
value="${deploy.dir}/sca_${composite.name}_rev${composite.revision}.jar"/>

 force overwrite if already there
<property name="overwrite" value="true"/>

configplan
<property name="configplan" value="${deploymentplan.name}"/>
</ant>
</target> -->
<target name="deployComposites">
   <available file="${customProcessList}" property="file.exists" value="true" />
    <fail unless="file.exists" message="ERROR: Filename '${customProcessList}' does not exist." />
    <loadfile property="allprocesses" srcFile="${customProcessList}"/>   
    <var name="errorCount" value="0"/>
    <var name="processCount" value="0"/>
    <var name="errorProcessNames" value="(none)"/>
    <trycatch property="tryName" reference="exception_ref">
      <try>
        <for list="${allprocesses}" param="processName" delimiter="${line.separator}">
          <sequential>
            <propertyregex property="composite.name"      input="@{processName}" regexp="(.*),(.*),(.*),(.*),(.*)" select="\1" override="true"/>
            <propertyregex property="composite.partition" input="@{processName}" regexp="(.*),(.*),(.*),(.*),(.*)" select="\2" override="true"/>
            <propertyregex property="composite.revision"  input="@{processName}" regexp="(.*),(.*),(.*),(.*),(.*)" select="\3" override="true"/>
            <propertyregex property="default.composite"   input="@{processName}" regexp="(.*),(.*),(.*),(.*),(.*)" select="\4" override="true"/>
            <propertyregex property="folder.name"         input="@{processName}" regexp="(.*),(.*),(.*),(.*),(.*)" select="\5" override="true"/>
                                                <!-- <property name="deploy.dir" value="${basedir}/${folder.name}/deploy"/> -->
            <math result="processCount" operand1="${processCount}" operation="+" operand2="1" datatype="int"/>

            <echo>
================================================================================
PACKAGE COMPOSITE #${processCount}: ${composite.name}
================================================================================
            </echo>

            <ant antfile="${oracle.home}/bin/ant-sca-package.xml" target="package" inheritall="false">
              <property name="compositeDir" value="${basedir}/${folder.name}"/>
              <property name="compositeName" value="${composite.name}"/>
              <property name="revision" value="${composite.revision}"/>
            </ant>

            <echo>
================================================================================
DEPLOY COMPOSITE #${processCount}: ${composite.name}
================================================================================
            </echo>
            <ant antfile="${oracle.home}/bin/ant-sca-deploy.xml" target="deploy" inheritall="false">
              <property name="user"                                 value="${server.user}"/>
              <property name="password"      value="${server.password}"/>
              <property name="serverURL"     value="http://${managed.server.host}:${managed.server.port}/soa-infra/deployer"/>
              <property name="sarLocation"                 value="${basedir}/${folder.name}/deploy/sca_${composite.name}_rev${composite.revision}.jar"/>
              <property name="partition"         value="${composite.partition}"/>
              <property name="overwrite"      value="true"/>
              <property name="forceDefault"                value="${default.composite}"/>
             <!-- <property name="configplan"             value="${deploymentplan.name}"/>-->
            </ant>
          </sequential>
        </for>
      </try>
      <catch>
        <property name="exception" refid="exception_ref" />
        <property name="message" value="ERROR IN TRYCATCH BLOCK:${line.separator}${exception}" />
        <echo></echo>
        <echo message="${message}" />
        <math result="errorCount" operand1="${errorCount}" operation="+" operand2="1" datatype="int"/>
        <var name="errorProcessNames" value="${composite.name}"/>
      </catch>
    </trycatch>

    <echo>
**************************************************************
*
*  ANT TARGET NAME:            deployComposites
*  FAILED PROCESS:             ${errorProcessNames}
*
**************************************************************
    </echo>
  </target>
</project>

Note:

Please place ant-contrib-1.0b3 .jar under ant home inside lib folder.you have to download from internet this jar.


your application looks like below:


happy deployment with ant.





Oracle Opatch utility 12c

 Hi Blog Viewers, This post will describes the how to apply single or multiple patches at a time. Prerequisites : Set the Oracle Home and Op...