blob: af0c1ce5bbc9f216bca4b03329bb1a19469f8c5a [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!-- This build file configures and runs the example on a WebLogic domain with independent servers (no clustering). -->
<project basedir="." default="build" name="org.eclipse.persistence.example.jpa.server.cachecoordination">
<property environment="env"/>
<property name="JEE_HOME" value="/scratch/wls/12.1.3"/>
<property name="WEBLOGIC_HOME" value="${JEE_HOME}/wlserver"/>
<property name="JEE_SERVER" value="${WEBLOGIC_HOME}/server"/>
<!-- localhost may not work, machine name/ip my be required. -->
<property name="JEE_HOST" value="localhost"/>
<!-- These ports are also in the Transaction.java and persistence.xml files. -->
<property name="JEE_PORT1" value="7021"/>
<property name="JEE_PORT2" value="7031"/>
<property name="JEE_PORT3" value="7041"/>
<property name="JEE_DOMAIN" value="./domain"/>
<!-- These also need to be defined in the jndi.properties file. -->
<property name="JEE_USER" value="weblogic"/>
<property name="JEE_PASSWORD" value="welcome1"/>
<!-- These need to be updated with your database settings. -->
<property name="DB_DRIVER" value="oracle.jdbc.OracleDriver"/>
<property name="DB_URL" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="DB_USER" value="scott"/>
<property name="DB_PASSWORD" value="tiger"/>
<!-- These will differ depending on the version of WebLogic. -->
<property name="JPA_LIB" value="${JEE_HOME}/oracle_common/modules/javax.persistence_2.2.0.0_1-0-2.jar"/>
<property name="EJB_LIB" value="${JEE_HOME}/oracle_common/modules/javax.ejb_3.3.0.jar"/>
<property name="ECLIPSELINK_LIB" value="${JEE_HOME}/oracle_common/modules/oracle.toplink_12.1.3/eclipselink.jar"/>
<property name="debuglevel" value="source,lines,vars"/>
<path id="example.classpath">
<pathelement location="classes"/>
<pathelement location="${JPA_LIB}"/>
<pathelement location="${EJB_LIB}"/>
<pathelement location="${ECLIPSELINK_LIB}"/>
<pathelement location="${JEE_SERVER}/lib/weblogic.jar"/>
</path>
<target name="init" depends="clean">
<mkdir dir="classes"/>
</target>
<target name="clean">
<delete dir="classes"/>
</target>
<target depends="init" name="build">
<echo message="${ant.project.name}: ${ant.file}"/>
<javac debug="true" debuglevel="${debuglevel}" destdir="classes">
<src path="src"/>
<exclude name="**/.svn/**"/>
<classpath refid="example.classpath"/>
</javac>
<copy todir="classes/META-INF">
<fileset dir="src/META-INF" includes="*"/>
</copy>
<copy todir="classes/">
<fileset dir="./" includes="jndi.properties"/>
</copy>
<jar jarfile="employee.jar">
<fileset dir="classes" includes="**"/>
</jar>
<ear destfile="employee.ear" appxml="src/META-INF/application.xml">
<fileset dir="." includes ="employee.jar"/>
</ear>
</target>
<!-- WebLogic ant tasks -->
<taskdef name="wlserver" classname="weblogic.ant.taskdefs.management.WLServer">
<classpath>
<pathelement location="${JEE_SERVER}/lib/weblogic.jar"/>
</classpath>
</taskdef>
<taskdef name="wlconfig" classname="weblogic.ant.taskdefs.management.WLConfig">
<classpath>
<pathelement location="${JEE_SERVER}/lib/weblogic.jar"/>
</classpath>
</taskdef>
<taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy">
<classpath>
<pathelement location="${JEE_SERVER}/lib/weblogic.jar"/>
</classpath>
</taskdef>
<!-- This creates the server domain. -->
<target name="create-cluster">
<delete dir="${JEE_DOMAIN}"/>
<mkdir dir="${JEE_DOMAIN}"/>
<wlserver fork="true" spawn="true" weblogichome="${WEBLOGIC_HOME}"
dir="${JEE_DOMAIN}" host="${JEE_HOST}" servername="admin" generateConfig="true" verbose="true"
username="${JEE_USER}" password="${JEE_PASSWORD}" action="start">
<classpath>
<fileset dir="${JEE_SERVER}/lib" includes="weblogic.jar,weblogic_sp.jar"/>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
</classpath>
<jvmarg value="-Xms512m"/>
<jvmarg value="-Xmx1024m"/>
<jvmarg value="-XX:MaxPermSize=128m"/>
</wlserver>
<wlconfig url="t3://${JEE_HOST}:7001" username="${JEE_USER}" password="${JEE_PASSWORD}">
<create type="Server" name="server1">
<set attribute="ListenPort" value="${JEE_PORT1}"/>
</create>
<create type="Server" name="server2">
<set attribute="ListenPort" value="${JEE_PORT2}"/>
</create>
<create type="Server" name="server3">
<set attribute="ListenPort" value="${JEE_PORT3}"/>
</create>
</wlconfig>
<wlserver fork="true" failonerror="false" weblogichome="${WEBLOGIC_HOME}"
dir="${JEE_DOMAIN}" host="${JEE_HOST}" port="7001" servername="admin"
username="${JEE_USER}" password="${JEE_PASSWORD}" action="shutdown">
</wlserver>
</target>
<!--
This target is to create connection pool and managed datasource required for running this JPA example.
Note: WLS server must be running.
-->
<target name="setup-cluster">
<wlconfig url="t3://${JEE_HOST}:7001" username="${JEE_USER}" password="${JEE_PASSWORD}">
<query domain="mydomain" type="JDBCConnectionPool" name="employeePool">
<delete/>
</query>
<query domain="mydomain" type="JDBCTxDataSource" name="EmployeeDS">
<delete/>
</query>
<query domain="mydomain" type="JDBCDataSource" name="EmployeeLocalDS">
<delete/>
</query>
<query domain="mydomain" type="JMSTopic" name="EmployeeTopic">
<delete/>
</query>
<query domain="mydomain" type="JMSConnectionFactory" name="EmployeeTopicConnectionFactory">
<delete/>
</query>
<query domain="mydomain" type="JMSServer" name="EmployeeJMSServer">
<delete/>
</query>
<query domain="mydomain" type="Server" name="*" property="cluster"/>
<query domain="mydomain" type="Server" name="server1" property="server1"/>
<create type="JDBCConnectionPool" name="employeePool">
<set attribute="CapacityIncrement" value="2"/>
<set attribute="DriverName" value="${DB_DRIVER}"/>
<set attribute="InitialCapacity" value="1"/>
<set attribute="MaxCapacity" value="50"/>
<set attribute="Password" value="${DB_PASSWORD}"/>
<set attribute="Properties" value="user=${DB_USER}"/>
<set attribute="URL" value="${DB_URL}"/>
<set attribute="Targets" value="${cluster}"/>
</create>
<create type="JDBCTxDataSource" name="EmployeeDS">
<set attribute="JNDIName" value="jdbc/EmployeeDS"/>
<set attribute="PoolName" value="employeePool"/>
<set attribute="Targets" value="${cluster}"/>
</create>
<create type="JDBCDataSource" name="EmployeeLocalDS">
<set attribute="JNDIName" value="jdbc/EmployeeLocalDS"/>
<set attribute="PoolName" value="employeePool"/>
<set attribute="Targets" value="${cluster}"/>
</create>
<create type="JMSConnectionFactory" name="EmployeeTopicConnectionFactory">
<set attribute="JNDIName" value="jms/EmployeeTopicConnectionFactory"/>
<set attribute="XAServerEnabled" value="false"/>
<set attribute="Targets" value="${cluster}"/>
</create>
<create type="JMSServer" name="EmployeeJMSServer">
<set attribute="Targets" value="${server1}"/>
<create type="JMSTopic" name="EmployeeTopic">
<set attribute="JNDIName" value="jms/EmployeeTopic"/>
</create>
</create>
</wlconfig>
</target>
<!-- This start the servers. -->
<target name="start-cluster">
<!--wlserver fork="true" spawn="true" weblogichome="${JEE_SERVER}"
dir="${JEE_DOMAIN}" host="${JEE_HOST}" port="${JEE_PORT1}" servername="server1" generateConfig="true" verbose="true"
username="${JEE_USER}" password="${JEE_PASSWORD}" action="start">
<classpath>
<fileset dir="${JEE_SERVER}/lib" includes="weblogic.jar,weblogic_sp.jar"/>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
</classpath>
<jvmarg value="-Xms512m"/>
<jvmarg value="-Xmx960m"/>
</wlserver>
<sleep seconds="30"/>
<wlserver fork="true" spawn="true" weblogichome="${JEE_SERVER}"
dir="${JEE_DOMAIN}" host="${JEE_HOST}" port="${JEE_PORT2}" servername="server2" generateConfig="true" verbose="true"
username="${JEE_USER}" password="${JEE_PASSWORD}" action="start">
<classpath>
<fileset dir="${JEE_SERVER}/lib" includes="weblogic.jar,weblogic_sp.jar"/>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
</classpath>
<jvmarg value="-Xms512m"/>
<jvmarg value="-Xmx960m"/>
</wlserver>
<wlserver fork="true" spawn="true" weblogichome="${JEE_SERVER}"
dir="${JEE_DOMAIN}" host="${JEE_HOST}" port="${JEE_PORT3}" servername="server3" generateConfig="true" verbose="true"
username="${JEE_USER}" password="${JEE_PASSWORD}" action="start">
<classpath>
<fileset dir="${JEE_SERVER}/lib" includes="weblogic.jar,weblogic_sp.jar"/>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
</classpath>
<jvmarg value="-Xms512m"/>
<jvmarg value="-Xmx960m"/>
</wlserver-->
<!-- There is probably a more eligent way to start the cluster, but for now this works -->
<!-- Where as using wlserver above did not seem to -->
<delete>
<fileset dir="./" includes="server*.log,server*.err"/>
</delete>
<parallel>
<echo message="*** starting WebLogic admin server"/>
<java classname="weblogic.Server"
fork="true"
failonerror="true">
<jvmarg value="-server"/>
<jvmarg value="-Xms512m"/>
<jvmarg value="-Xmx1024m"/>
<jvmarg value="-XX:MaxPermSize=128m"/>
<env key="PATH" value="${env.JAVA_HOME}/bin:${env.PATH}"/>
<sysproperty key="weblogic.Name" value="admin"/>
<sysproperty key="bea.home" value="${JEE_HOME}"/>
<sysproperty key="weblogic.management.username" value="${JEE_USER}"/>
<sysproperty key="weblogic.management.password" value="${JEE_PASSWORD}"/>
<sysproperty key="java.security.police" value='"${JEE_SERVER}/lib/weblogic.policy"'/>
<sysproperty key="weblogic.RootDirectory" value="${JEE_DOMAIN}"/>
<sysproperty key="weblogic.Stdout" value="admin.log"/>
<sysproperty key="weblogic.Stderr" value="admin.err"/>
<classpath>
<fileset dir="${JEE_SERVER}/lib" includes="weblogic.jar,weblogic_sp.jar"/>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
</classpath>
</java>
<sequential>
<waitfor>
<socket server="${JEE_HOST}" port="7001"/>
</waitfor>
<parallel>
<echo message="*** starting managed server: server1 "/>
<java classname="weblogic.Server"
fork="true"
failonerror="true">
<jvmarg value="-server"/>
<jvmarg value="-Xms512m"/>
<jvmarg value="-Xmx1024m"/>
<jvmarg value="-XX:MaxPermSize=128m"/>
<env key="PATH" value="${env.JAVA_HOME}/bin:${env.PATH}"/>
<sysproperty key="weblogic.Name" value="server1"/>
<sysproperty key="bea.home" value="${JEE_HOME}"/>
<sysproperty key="weblogic.management.server" value="${JEE_HOST}:7001"/>
<sysproperty key="weblogic.management.username" value="${JEE_USER}"/>
<sysproperty key="weblogic.management.password" value="${JEE_PASSWORD}"/>
<sysproperty key="java.security.police" value='"${JEE_SERVER}/lib/weblogic.policy"'/>
<sysproperty key="weblogic.RootDirectory" value="${JEE_DOMAIN}"/>
<sysproperty key="weblogic.Stdout" value="server1.log"/>
<sysproperty key="weblogic.Stderr" value="server1.err"/>
<!-- When using RMI outside of a cluster, the host URL must be defined, either as a system property, -->
<!-- in the persistence.xml or in code in a SessionCustomizer -->
<sysproperty key="eclipselink.cache.coordination.rmi.url" value="t3://${JEE_HOST}:${JEE_PORT1}/" />
<classpath>
<fileset dir="${JEE_SERVER}/lib" includes="weblogic.jar,weblogic_sp.jar"/>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
</classpath>
</java>
<echo message="*** starting managed server: server2 "/>
<java classname="weblogic.Server"
fork="true"
failonerror="true">
<jvmarg value="-server"/>
<jvmarg value="-Xms512m"/>
<jvmarg value="-Xmx1024m"/>
<jvmarg value="-XX:MaxPermSize=128m"/>
<env key="PATH" value="${env.JAVA_HOME}/bin:${env.PATH}"/>
<sysproperty key="weblogic.Name" value="server2"/>
<sysproperty key="bea.home" value="${JEE_HOME}"/>
<sysproperty key="weblogic.management.server" value="${JEE_HOST}:7001"/>
<sysproperty key="weblogic.management.username" value="${JEE_USER}"/>
<sysproperty key="weblogic.management.password" value="${JEE_PASSWORD}"/>
<sysproperty key="java.security.police" value='"${JEE_SERVER}/lib/weblogic.policy"'/>
<sysproperty key="weblogic.RootDirectory" value="${JEE_DOMAIN}"/>
<sysproperty key="weblogic.Stdout" value="server2.log"/>
<sysproperty key="weblogic.Stderr" value="server2.err"/>
<!-- When using RMI outside of a cluster, the host URL must be defined, either as a system property, -->
<!-- in the persistence.xml or in code in a SessionCustomizer -->
<sysproperty key="eclipselink.cache.coordination.rmi.url" value="t3://${JEE_HOST}:${JEE_PORT2}/" />
<classpath>
<fileset dir="${JEE_SERVER}/lib" includes="weblogic.jar,weblogic_sp.jar"/>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
</classpath>
</java>
<echo message="*** starting managed server: server3 "/>
<java classname="weblogic.Server"
fork="true"
failonerror="true">
<jvmarg value="-server"/>
<jvmarg value="-Xms512m"/>
<jvmarg value="-Xmx1024m"/>
<jvmarg value="-XX:MaxPermSize=128m"/>
<env key="PATH" value="${env.JAVA_HOME}/bin:${env.PATH}"/>
<sysproperty key="weblogic.Name" value="server3"/>
<sysproperty key="bea.home" value="${JEE_HOME}"/>
<sysproperty key="weblogic.management.server" value="${JEE_HOST}:7001"/>
<sysproperty key="weblogic.management.username" value="${JEE_USER}"/>
<sysproperty key="weblogic.management.password" value="${JEE_PASSWORD}"/>
<sysproperty key="java.security.police" value='"${JEE_SERVER}/lib/weblogic.policy"'/>
<sysproperty key="weblogic.RootDirectory" value="${JEE_DOMAIN}"/>
<sysproperty key="weblogic.Stdout" value="server3.log"/>
<sysproperty key="weblogic.Stderr" value="server3.err"/>
<!-- When using RMI outside of a cluster, the host URL must be defined, either as a system property, -->
<!-- in the persistence.xml or in code in a SessionCustomizer -->
<sysproperty key="eclipselink.cache.coordination.rmi.url" value="t3://${JEE_HOST}:${JEE_PORT3}/" />
<classpath>
<fileset dir="${JEE_SERVER}/lib" includes="weblogic.jar,weblogic_sp.jar"/>
<pathelement location="${env.JAVA_HOME}/lib/tools.jar"/>
</classpath>
</java>
<sequential>
<waitfor>
<and>
<socket server="${JEE_HOST}" port="${JEE_PORT1}"/>
<socket server="${JEE_HOST}" port="${JEE_PORT2}"/>
<socket server="${JEE_HOST}" port="${JEE_PORT3}"/>
</and>
</waitfor>
<sleep seconds="30"/>
<echo message="*** done, do not close/break prompt "/>
</sequential>
</parallel>
</sequential>
</parallel>
</target>
<!-- Stop the servers. -->
<target name="stop-cluster">
<wlserver fork="true" failonerror="false" weblogichome="${WEBLOGIC_HOME}"
dir="${JEE_DOMAIN}" host="${JEE_HOST}" port="7001" servername="admin"
username="${JEE_USER}" password="${JEE_PASSWORD}" action="shutdown">
</wlserver>
<wlserver fork="true" failonerror="false" weblogichome="${WEBLOGIC_HOME}"
dir="${JEE_DOMAIN}" host="${JEE_HOST}" port="${JEE_PORT1}" servername="server1"
username="${JEE_USER}" password="${JEE_PASSWORD}" action="shutdown">
</wlserver>
<wlserver fork="true" failonerror="false" weblogichome="${WEBLOGIC_HOME}"
dir="${JEE_DOMAIN}" host="${JEE_HOST}" port="${JEE_PORT2}" servername="server2"
username="${JEE_USER}" password="${JEE_PASSWORD}" action="shutdown">
</wlserver>
<wlserver fork="true" failonerror="false" weblogichome="${WEBLOGIC_HOME}"
dir="${JEE_DOMAIN}" host="${JEE_HOST}" port="${JEE_PORT3}" servername="server3"
username="${JEE_USER}" password="${JEE_PASSWORD}" action="shutdown">
</wlserver>
</target>
<!--
Deploy the application ear to the servers.
Note: WLS server must be running.
-->
<target name="deploy">
<wldeploy action="deploy"
name="employee" source="employee.ear"
user="${JEE_USER}" password="${JEE_PASSWORD}"
adminurl="t3://${JEE_HOST}:7001"
failonerror="false" targets="server1,server2,server3">
</wldeploy>
</target>
<target name="example">
<java classname="example.Transactions" fork="true">
<!--jvmarg value="${AGENT}"/-->
<classpath refid="example.classpath"/>
</java>
</target>
</project>