OC4J 9 Application Server Module

Public Targets

TargetDescription
deploydeploys war to oc4j
undeployremoves webapp from oc4j
redeployreload already deployed webapp on oc4j
fdeploycopy deployment folder to oc4j - not implemented
fundeployremoves expanded deployment - not implemented
jspccompile JSPs
appcgenerate/compile JSP/EJB support files - not implemented
startstart oc4j server
stopstop oc4j server
remote-deploydeploys war to remote oc4j
-restartrestart oc4j

Source: appserver-oc4j.xml

				<?xml version="1.0" encoding="UTF-8"?>
<project name="appserver">
	<description>
  + ==\_/============J=A=V=A=G=E=N===A=N=T===M=O=D=U=L=E=S================= +
  +  \(_)/                                                                  +
  +  -(_)-             OC4J 9 Application Server Module                     +
  +  /(_)\                                                                  +
  + ======================================================================= +
  +    Copyright (c) 2002-2005 Outsource Cafe, Inc.  All rights reserved.   +
  + ======================================================================= +
  +
  + Public targets: 
  +    deploy         - deploys distribution file to server
  +    undeploy       - removes distribution file from server
  +    fdeploy        - folder deploys expanded app to server
  +    fundeploy      - folder undeploy removes expanded app from server
  +    redeploy       - redeploys distribution to server
  +    start          - starts application server
  +    stop           - stops application server
  +    jspc           - server-specific JSP compiler
  +
  +    remote-deploy  - deploys distribution file to remote application server 
  +    restart        - restarts application server  
  +
  + Support targets: 
  +    started        - sets 'server.started' if server is running
  +    stopped        - sets 'can.end' if server running and not 'server.started' 
  +                    avoiding stops on servers up before testcycle initiation
  +
  + Properties:
  +   ${dist.name}    			- the distribution file name, should be predefined.
  +   ${dist.dir}     			- the loaction of jar/war files, should be predefined.
  +   ${oc4j.remote.deploy.ormi}		- the java naming provider url, should be predefined.
  +   ${oc4j.remote.deploy.username}	- the name of  admin account of remote oc4j application server.
  +   ${oc4j.remotedeploy.password}		- the password of admin account of remote oc4j application server.
  +
  + Prereque:
  +   JDeveloper 9.0.4			- only for remote deployment. oc4j is packed inside by default ( ${env.JDEV_HOME}/j2ee/home )
  +   ${env.JDEV_HOME}			- environmental variable pointing to the JDeveloper 9.0.4 installation direcotry, should be predefined.
  +   ${env.OC4J_HOME}			- environmental variable pointing to the OC4J installation direcotry, should be predefined.
  +
  + Note: this has not been tested with EJBs yet, feedback appreciated. (RE 2/19/05)
  +
  + developer: daxin@myway.com
  + developer: RichardEasterling@OutsourceCafe.com,
  + ======================================================================= +
  + Licensed under the Apache License, Version 2.0 (the "License");
  + you may not use this file except in compliance with the License.
  + You may obtain a copy of the License at
  +
  +   http://www.apache.org/licenses/LICENSE-2.0
  +
  + Unless required by applicable law or agreed to in writing, software
  + distributed under the License is distributed on an "AS IS" BASIS,
  + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  + See the License for the specific language governing permissions and
  + limitations under the License.
  + =J=A=M===========================================J=A=V=A=G=E=N=.=C=O=M= +

	</description>
	<property name="APPSERVER.PRESENT" value="true"></property>
	<property name="OC4J.PRESENT" value="true"></property>
	<!-- =================================================================== -->
	<!-- public targets: -->
	<!-- =================================================================== -->
	<target name="deploy" depends="-deploy" description="deploys war to oc4j"></target>
	<target name="undeploy" depends="-undeploy" description="removes webapp from oc4j"></target>
	<target name="redeploy" depends="-redeploy" description="reload already deployed webapp on oc4j"></target>
	<target name="fdeploy" depends="-deploy" description="copy deployment folder to oc4j - not implemented "></target>
	<target name="fundeploy" depends="-undeploy" description="removes expanded deployment - not implemented"></target>
	<target name="jspc" depends="-jspc" description="compile JSPs"></target>
	<target name="appc" depends="" description="generate/compile JSP/EJB support files - not implemented"></target>
	<target name="start" depends="started, -start" description="start oc4j server"></target>
	<target name="stop" depends="stopped, -stop" description="stop oc4j server"></target>
	<target name="remote-deploy" depends="-remote-deploy" description="deploys war to remote oc4j"></target>
	<!-- ==================================================================== -->
	<!-- OC4J-specific properties and sanity checks: -->
	<!-- ==================================================================== -->
	<property name="oc4j.version" value="9.0.4.0.0"></property>
	<property environment="env"></property>
	<condition property="oc4j.home" value="${env.OC4J_HOME}">
		<isset property="env.OC4J_HOME"></isset>
	</condition>
	<fail unless="oc4j.home">'oc4jt.home' is not set. Set the 'oc4j.home' property or create an environmental variable called 'OC4J_HOME' pointing to the top-level OC4J installation directory.</fail>
	<available property="oc4j.present" file="${oc4j.home}/oc4j.jar"></available>
	<fail unless="oc4j.present">Property "oc4j.home" or 'OC4J_HOME' is set but it does not seem to point to the right directory. The file "oc4j.jar" must be available at ${oc4j.home}/ </fail>
	<property name="jdev.home" location="${env.JDEV_HOME}"></property>
	<property name="oc4j.lib.dir" location="${oc4j.home}/lib"></property>
	<property name="build.jspc.java.folder" location="${build.dir}\_page"></property>
	<property name="build.jspc.classes.dir" location="${build.dir}\_page"></property>
	<!-- override jspc properties: 
	<property name="build.jspc.java.folder" location="work"/>
	<property name="build.jspc.classes.dir" location="${build.jspc.java.dir}"/>
	<property name="oc4j.dist" location="${env.OC4J_DIST}"/>
	-->
	<!-- ==================================================================== -->
	<!-- standard application server settings -->
	<!-- ==================================================================== -->
	<property name="appserver.name" value="OC4J"></property>
	<property name="appserver.version" value="${oc4j.version}"></property>
	<property name="appserver.deploy.folder" value="applications"></property>
	<property name="appserver.deploy.dir" location="${oc4j.home}/${appserver.deploy.folder}"></property>
	<property name="appserver.http.port" value="8888"></property>
	<property name="appserver.host" value="127.0.0.1"></property>
	<!-- adjust delays (in seconds) according to deployment speed: -->
	<property name="appserver.start.delay" value="4"></property>
	<property name="appserver.deploy.delay" value="4"></property>
	<property name="appserver.post.stop.delay" value="4"></property>
	<property name="appserver.restart.delay" value="6"></property>
	<!-- used in Log4J config. to determine log file locations: -->
	<property name="appserver.log.folder" location="${oc4j.home}/log"></property>
	<!-- ==================================================================== -->
	<!-- standard client properties -->
	<!-- ==================================================================== -->
	<property name="appserver.java.naming.factory.initial" value="com.evermind.server.ApplicationClientInitialContextFactory"></property>
	<property name="appserver.java.naming.provider.url" value="opmn:ormi://127.0.0.1:7777/"></property>
	<path id="appserver.client.classpath">
		<fileset dir="${oc4j.home}">
			<include name="oc4jclient.jar"></include>
		</fileset>
	</path>
	<!-- ==================================================================== -->
	<!-- ojspc properties: -->
	<!-- ==================================================================== -->
	<!-- ojspc default jar propertries, reccomend overriding in project.xml -->
	<property name="appserver.jspc.java.dir" location="${build.jspc.java.folder}"></property>
	<property name="appserver.jspc.classes.dir" location="${build.jspc.classes.dir}"></property>
	<available property="OJSP.PRESENT" file="${oc4j.home}/lib/ojsp.jar"></available>
	<available property="JSPC-JAR.PRESENT" file="${appserver.jspc.classes.dir}/${jspc.package}.jar"></available>
	<property name="jspc.package" value="_page"></property>
	<property name="jspc.uriroot" location="${build.web.dir}"></property>
	<path id="jspc.classpath">
		<path refid="build.web.classpath"></path>
		<pathelement location="${oc4j.home}/oc4j.jar"></pathelement>
		<pathelement location="${oc4j.home}/lib/ojsp.jar"></pathelement>
		<pathelement location="${oc4j.home}/lib/servlet.jar"></pathelement>
		<fileset dir="${build.web.webinf.dir}/lib">
			<include name="*.jar"></include>
		</fileset>
	</path>
	<!-- ==================================================================== -->
	<!-- deployment settings, override if admin account is different-->
	<!-- ==================================================================== -->
	<property name="oc4j.deploy.ormi" value="ormi://127.0.0.1:23791"></property>
	<property name="oc4j.deploy.username" value="admin"></property>
	<property name="oc4j.deploy.password" value="password"></property>
	<property name="maven.type" value="ear"></property>
	<property name="dist.name" value="${module.name}-${module.version}.${maven.type}"></property>
	<!-- =================================================================== -->
	<!-- compiles JSPs to java, then to classes: -->
	<!-- =================================================================== -->
	<!--
	<target name="jspc" if="OJSP.PRESENT" depends="war.copy" description="compile JSPs">
		<mkdir dir="${appserver.jspc.classes.dir}"/>
		<mkdir dir="${appserver.jspc.java.dir}"/>
		<echo>appserver.jspc.classes.dir = ${appserver.jspc.classes.dir}</echo>
		<echo>appserver.jspc.java.dir    = ${appserver.jspc.java.dir}</echo>
		<echo>jspc jar file path=${appserver.jspc.classes.dir}/${jspc.package}.jar</echo>
		<java classname="oracle.jsp.tools.Jspc" fork="yes" dir="${build.web.folder}">
			<arg line="-addclasspath ${build.web.classes.dir};${appserver.jspc.classes.dir}  -appRoot ${build.web.dir}  -d ${appserver.jspc.classes.dir}    -srcdir ${appserver.jspc.java.dir}    -verbose ${build.web.dir}\*.jsp  -noCompile"/>
			<classpath>
				<pathelement path="${oc4j.home}/lib/ojsp.jar"/>
				<pathelement location="${oc4j.home}/lib/servlet.jar"/>
				<pathelement location="${oc4j.home}/oc4j.jar"/>
			</classpath>
		</java>

		<javac srcdir="${appserver.jspc.java.dir}" destdir="${appserver.jspc.classes.dir}" classpathref="jspc.classpath" debug="${compiler.debug}" deprecation="${compiler.deprecation}" optimize="${compiler.optimize}" compiler="${compiler.type}" encoding="ISO8859_1"/>

		<delete>
			<fileset dir="${appserver.jspc.java.dir}" includes="**/*.java"/>
		</delete>
		<jar destfile="${appserver.jspc.classes.dir}/${jspc.package}.jar">
			<fileset dir="${appserver.jspc.classes.dir}" casesensitive="yes">
				<include name="**/*.class"/>
				<exclude name="**/*.res"/>
			</fileset>
		</jar>
	</target>
    -->
	<!-- Get the <ojspc> task at http://www.pittjug.org/JSPWiki/attach?page=CarlTrusiak%2Fojspc.zip -->
	<target name="-jspc" if="OJSP.PRESENT">
		<mkdir dir="${appserver.jspc.classes.dir}"></mkdir>
		<mkdir dir="${appserver.jspc.java.dir}"></mkdir>
		<taskdef name="ojspc" classname="org.apache.tools.ant.taskdefs.optional.jsp.OJspC" classpath="${ojspc.jar}"></taskdef>
		<ojspc d="${appserver.jspc.classes.dir}" srcdir="${appserver.jspc.java.dir}" appRoot="${build.web.dir}" debug="true" noTldxmlValidate="false" verbose="true">
			<classpath refid="jspc.classpath"></classpath>
			<fileset dir="${build.web.dir}">
				<include name="**/*.jsp"></include>
			</fileset>
		</ojspc>
		<delete>
			<fileset dir="${appserver.jspc.java.dir}" includes="**/*.java"></fileset>
		</delete>
		<jar destfile="${appserver.jspc.classes.dir}/${jspc.package}.jar">
			<fileset dir="${appserver.jspc.classes.dir}" casesensitive="yes">
				<include name="**/*.class"></include>
				<exclude name="**/*.res"></exclude>
			</fileset>
		</jar>
	</target>
	<!-- =================================================================== -->
	<!-- deploy archive (jar/war/ear) to server                                            -->
	<!-- =================================================================== -->
	<target name="-deploy">
		<!-- Deploy the EAR file -->
		<echo></echo>
		<echo>java -jar ${oc4j.home}/admin.jar ${oc4j.deploy.ormi} ${oc4j.deploy.username} ${oc4j.deploy.password} -deploy -file ${dist.dir}/${dist.name} -deploymentName ${module.name}</echo>
		<echo></echo>
		<java jar="${oc4j.home}/admin.jar" fork="yes">
			<arg value="${oc4j.deploy.ormi}"></arg>
			<arg value="${oc4j.deploy.username}"></arg>
			<arg value="${oc4j.deploy.password}"></arg>
			<arg value="-deploy"></arg>
			<arg value="-file"></arg>
			<arg value="${dist.dir}/${dist.name}"></arg>
			<arg value="-deploymentName"></arg>
			<arg value="${module.name}"></arg>
		</java>
		<!-- Bind the Web module -->
		<echo></echo>
		<echo message="java -jar ${oc4j.home}/admin.jar ${oc4j.deploy.ormi} ${oc4j.deploy.username} ${oc4j.deploy.password}  -bindWebApp ${module.name} ${module.name} http-web-site /${module.name}"></echo>
		<echo></echo>
		<java jar="${oc4j.home}/admin.jar" fork="yes">
			<arg value="${oc4j.deploy.ormi}"></arg>
			<arg value="${oc4j.deploy.username}"></arg>
			<arg value="${oc4j.deploy.password}"></arg>
			<arg value="-bindWebApp"></arg>
			<arg value="${module.name}"></arg>
			<arg value="${module.name}-${module.version}"></arg>
			<arg value="http-web-site"></arg>
			<arg value="/${module.name}"></arg>
		</java>
	</target>
	<!-- =================================================================== -->
	<!-- deploy archive (jar/war/ear) to server                                            -->
	<!-- =================================================================== -->
	<target name="bind-web-app">
		<java jar="${oc4j.home}/admin.jar" fork="yes">
			<arg value="${oc4j.deploy.ormi}"></arg>
			<arg value="${oc4j.deploy.username}"></arg>
			<arg value="${oc4j.deploy.password}"></arg>
			<arg value="-bindWebApp"></arg>
			<arg value="${module.name}"></arg>
			<arg value="${module.name}.war"></arg>
			<arg value="http-web-site"></arg>
			<arg value="/${module.name}"></arg>
		</java>
	</target>
	<!-- =================================================================== -->
	<!--redeploy archive (jar/war/ear) to server (It seems doesn't work)                                            -->
	<!-- =================================================================== -->
	<target name="-redeploy">
		<!-- Deploy the EAR file -->
		<echo></echo>
		<echo>java -jar ${oc4j.home}/admin.jar ${oc4j.deploy.ormi} ${oc4j.deploy.username} ${oc4j.deploy.password} -deploy -file ${dist.dir}/${dist.name} -deploymentName ${module.name}</echo>
		<echo></echo>
		<java jar="${oc4j.home}/admin.jar" fork="yes">
			<arg value="${oc4j.deploy.ormi}"></arg>
			<arg value="${oc4j.deploy.username}"></arg>
			<arg value="${oc4j.deploy.password}"></arg>
			<arg value="-deploy"></arg>
			<arg value="-file"></arg>
			<arg value="${dist.dir}/${dist.name}"></arg>
			<arg value="-deploymentName"></arg>
			<arg value="${module.name}"></arg>
		</java>
	</target>
	<!-- =================================================================== 			-->
	<!-- deploy archive (jar/war/ear) to remote oracle 10g server                       -->
	<!-- eg.																			-->
	<!-- 	${oc4j.remote.deploy.HTTPClient}=http://10.1.11.11:1810/Oc4jDcmServletAPI/  -->
	<!-- 	${oc4j.remote.home} = /u02/app/oracle                                       -->
	<!-- =================================================================== 			-->
	<target name="-remote-deploy">
		<echo>remote deploy:${dist.dir}/${dist.name}</echo>
		<java jar="${jdev.home}/jdev/lib/oc4j_remote_deploy.jar" fork="yes">
			<jvmarg value="-Djava.protocol.handler.pkgs=HTTPClient"></jvmarg>
			<arg value="${oc4j.remote.deploy.HTTPClient}"></arg>
			<arg value="${oc4j.remote.deploy.username}"></arg>
			<arg value="${oc4j.remote.deploy.password}"></arg>
			<arg value="deploy"></arg>
			<arg value="${oc4j.remote.home}"></arg>
			<arg value="${dist.dir}/${dist.name}"></arg>
			<arg value="${module.name}"></arg>
			<arg value="OC4J_PORTAL"></arg>
		</java>
	</target>
	<!-- =================================================================== -->
	<!-- remove archive (jar/war/ear) from server                                          -->
	<!-- =================================================================== -->
	<target name="-undeploy">
		<java jar="${oc4j.home}/admin.jar" fork="yes">
			<arg value="${oc4j.deploy.ormi}"></arg>
			<arg value="${oc4j.deploy.username}"></arg>
			<arg value="${oc4j.deploy.password}"></arg>
			<arg value="-undeploy"></arg>
			<arg value="${module.name}"></arg>
		</java>
	</target>
	<!-- =================================================================== -->
	<!-- start oc4j, run it as a backend process -->
	<!-- =================================================================== -->
	<target name="-start" unless="server.started">
		<java jar="${oc4j.home}/oc4j.jar" fork="yes" spawn="yes">
			<arg value="-config"></arg>
			<arg value="${oc4j.home}/config/server.xml"></arg>
			<arg value="-quiet"></arg>
		</java>
	</target>
	<!-- =================================================================== -->
	<!-- sets 'server.started' if server is running -->
	<!-- =================================================================== -->
	<target name="started">
		<condition property="server.started">
			<and>
				<socket port="${appserver.http.port}" server="${appserver.host}"></socket>
			</and>
		</condition>
		<echo>server.started = ${server.started}</echo>
	</target>
	<!-- =================================================================== -->
	<!-- stop oc4j -->
	<!-- =================================================================== -->
	<target name="-stop" if="can.end">
		<java jar="${oc4j.home}/admin.jar" fork="yes">
			<arg value="${oc4j.deploy.ormi}"></arg>
			<arg value="${oc4j.deploy.username}"></arg>
			<arg value="${oc4j.deploy.password}"></arg>
			<arg value="-shutdown"></arg>
		</java>
		<echo>sleeping ${appserver.post.stop.delay}s...</echo>
		<sleep seconds="${appserver.post.stop.delay}"></sleep>
	</target>
	<!-- =================================================================== -->
	<!-- sets 'can.end' if server running and not 'server.started -->
	<!-- avoiding stops on servers up before testcycle initiation -->
	<!-- =================================================================== -->
	<target name="stopped">
		<condition property="can.end">
			<and>
				<socket port="${appserver.http.port}" server="${appserver.host}"></socket>
				<not>
					<isset property="server.started"></isset>
				</not>
			</and>
		</condition>
		<echo>can.end = ${can.end}</echo>
	</target>
	<!-- =================================================================== -->
	<!-- restart oc4j (No response)-->
	<!-- =================================================================== -->
	<target name="-restart" description="restart oc4j">
		<java jar="${oc4j.home}/admin.jar" fork="yes">
			<arg value="${oc4j.deploy.ormi}"></arg>
			<arg value="${oc4j.deploy.username}"></arg>
			<arg value="${oc4j.deploy.password}"></arg>
			<arg value="-restart"></arg>
		</java>
		<echo>sleeping ${appserver.restart.delay}s...</echo>
		<sleep seconds="${appserver.restart.delay}"></sleep>
	</target>
</project>