jboss文档中,构建、部署及初始化duke's bank应用的步骤如下:
第一步、Compiling the Java Source
ant -f jboss-build.xml compile
第二步、Package the EJBs
ant -f jboss-build.xml package-ejb
第三步、Package the WAR File
ant -f jboss-build.xml package-web
第四步、Package the Java Client
ant -f jboss-build.xml package-client
第五步、Assembling the EAR
ant -f jboss-build.xml assemble-app
第六步、Creating the Database Schema:
to create the necessary tables
ant -f jboss-build.xml db-create-table
populate them with the required data.
ant -f jboss-build.xml db-insert
第七步、Deploying the Application
ant -f jboss-build.xml deploy
详细build文件如下:
<project name="jboss-dukes-bank" default="all" basedir=".">
<property file="../../jboss-build.properties"/>
<property name="lib.dir" value="../../libs"/>
<property name="src.dir" value="${basedir}/src"/>
<property name="build.dir" value="${basedir}/build"/>
<!-- The classpath for running the client -->
<path id="client.classpath">
<pathelement location="${build.dir}"/>
<fileset dir="${jboss.home}/client">
<include name="**/*.jar"/>
</fileset>
</path>
<!-- The build classpath -->
<path id="build.classpath">
<path refid="client.classpath"/>
<fileset dir="${jboss.server}/lib/">
<include name="javax.servlet*.jar"/>
</fileset>
</path>
<!-- Hypersonic SQL classpath -->
<path id="hsql.classpath">
<pathelement location="${jboss.server}/lib/hsqldb.jar"/>
</path>
<!-- =================================================================== -->
<!-- Initialises the build. -->
<!-- =================================================================== -->
<target name="prepare">
<mkdir dir="${build.dir}"/>
</target>
<!-- ================================================================ -->
<!-- Compiles the source code -->
<!-- ================================================================ -->
<target name="compile" depends="prepare">
<javac destdir="${build.dir}" classpathref="build.classpath"
debug="on">
<src path="${src.dir}"/>
</javac>
</target>
<target name="package-ejb" depends="compile">
<mkdir dir="jar" />
<delete file="jar/account-ejb.jar"/>
<jar jarfile="jar/bank-ejb.jar">
<metainf dir="dd/ejb" includes="**/*.xml" />
<fileset dir="${build.dir}">
<include name="com/sun/ebank/util/**"/>
<include name="com/sun/ebank/ejb/**" />
</fileset>
</jar>
</target>
<target name="package-ws">
<mkdir dir="jar" />
<delete file="jar/bankws-ejb.jar"/>
<jar jarfile="jar/bankws-ejb.jar">
<metainf dir="dd/ws" includes="**/*" />
<fileset dir="${build.dir}">
<include name="com/jboss/ebank/**" />
<include name="com/sun/ebank/ejb/account/AccountController**"/>
<include name="com/sun/ebank/ejb/exception/**"/>
<include name="com/sun/ebank/util/**"/>
</fileset>
</jar>
</target>
<target name="package-client" depends="compile">
<mkdir dir="jar" />
<copy todir="${build.dir}">
<fileset dir="${src.dir}">
<include name="**/appclient/*.properties"/>
</fileset>
<mapper type="flatten"/>
</copy>
<delete file="jar/app-client.jar"/>
<jar jarfile="jar/app-client.jar">
<metainf dir="dd/client" includes="*.xml"/>
<fileset dir="${build.dir}">
<include name="com/sun/ebank/appclient/**"/>
<include name="com/sun/ebank/ejb/exception/**"/>
<include name="com/sun/ebank/util/**"/>
<include name="com/sun/ebank/ejb/customer/Account.class"/>
<include name="com/sun/ebank/ejb/customer/AccountHome.class"/>
</fileset>
<fileset dir="dd/client">
<include name="jndi.properties"/>
</fileset>
<fileset dir="${src.dir}/com/sun/ebank/">
<include name="appclient/*.properties"/>
</fileset>
</jar>
</target>
<target name="package-web" depends="compile">
<mkdir dir="jar" />
<delete file="jar/web-client.war"/>
<copy file="web/WebMessages.properties"
tofile="web/WebMessages_en.properties" />
<war warfile="jar/web-client.war" webxml="dd/web/web.xml">
<fileset dir="web">
<include name="*.jsp"/>
<include name="template/*"/>
<include name="images/*.gif"/>
</fileset>
<webinf dir="dd/web">
<include name="jboss-web.xml"/>
</webinf>
<webinf dir="web">
<include name="*.tld"/>
<exclude name="*.jsp"/>
<exclude name="*.txt"/>
<exclude name="images/**"/>
</webinf>
<webinf dir="jar">
<include name="*.tld"/>
</webinf>
<lib dir="${lib.dir}">
<include name="jstl.jar"/>
<include name="standard.jar"/>
</lib>
<classes dir="${build.dir}">
<include name="**/*.class"/>
<exclude name="com/sun/ebank/appclient/**"/>
<exclude name="com/sun/ebank/ejb/**"/>
<exclude name="com/sun/ebank/util/**"/>
</classes>
<classes dir="web">
<include name="*.properties"/>
</classes>
</war>
</target>
<target name="wstool">
<taskdef name="wstools" classname="org.jboss.ws.tools.ant.wstools">
<classpath refid="build.classpath" />
</taskdef>
<wstools dest="dd/ws"
config="wstools-config.xml"/>
</target>
<target name="deploy-ws">
<copy file="jar/bankws-ejb.jar" todir="${jboss.server}/deploy"/>
</target>
<target name="run-ws">
<java classname="com.jboss.ebank.WSClient" fork="true">
<jvmarg value="-Djava.endorsed.dirs=${jboss.home}/lib/endorsed" />
<classpath>
<path refid="client.classpath"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
</target>
<target name="ws" depends="wstool,package-ws,deploy-ws">
</target>
<!-- Creates an ear file containing the ejb jars and the web client war. -->
<target name="assemble-app">
<delete file="jar/JBossDukesBank.ear"/>
<ear destfile="jar/JBossDukesBank.ear" appxml="dd/application.xml">
<fileset dir="jar" includes="*-ejb.jar,app-client.jar,*.war,*.wsr"/>
<fileset dir="src" includes="users.properties,roles.properties"/>
</ear>
</target>
<!-- Deploys the EAR file by copying it to the JBoss deploy directory. -->
<target name="deploy" depends="assemble-app">
<copy file="jar/JBossDukesBank.ear" todir="${jboss.server}/deploy"/>
</target>
<!-- Run the standalone client -->
<target name="run-client">
<echo>${java.class.path}</echo>
<java classname="com.sun.ebank.appclient.BankAdmin" fork="yes">
<classpath>
<pathelement path="jar/app-client.jar"/>
<path refid="client.classpath"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
</target>
<!-- Call the HSQL ScriptTool utility. -->
<target name="db-create-table">
<java classname="org.hsqldb.util.ScriptTool" fork="yes">
<arg value="-url"/>
<arg value="jdbc:hsqldb:hsql:"/>
<arg value="-database"/>
<arg value="//localhost:1701"/>
<arg value="-script"/>
<arg value="sql/hsql-create-table.sql"/>
<classpath refid="hsql.classpath"/>
</java>
</target>
<target name="db-insert">
<java classname="org.hsqldb.util.ScriptTool" fork="yes">
<arg value="-url"/>
<arg value="jdbc:hsqldb:hsql:"/>
<arg value="-database"/>
<arg value="//localhost:1701"/>
<arg value="-script"/>
<arg value="sql/hsql-insert.sql"/>
<classpath refid="hsql.classpath"/>
</java>
</target>
<target name="db-list">
<java classname="org.hsqldb.util.ScriptTool" fork="yes">
<arg value="-url"/>
<arg value="jdbc:hsqldb:hsql:"/>
<arg value="-database"/>
<arg value="//localhost:1701"/>
<arg value="-script"/>
<arg value="sql/hsql-list.sql"/>
<classpath refid="hsql.classpath"/>
</java>
</target>
<!--
<target name="db-delete">
<java classname="org.hsqldb.util.ScriptTool" fork="yes">
<arg value="-url"/>
<arg value="jdbc:hsqldb:hsql:"/>
<arg value="-database"/>
<arg value="//localhost:1701"/>
<arg value="-script"/>
<arg value="sql/delete.sql"/>
<classpath refid="hsql.classpath"/>
</java>
</target>
<target name="db-reset-key">
<java classname="org.hsqldb.util.ScriptTool" fork="yes">
<arg value="-url"/>
<arg value="jdbc:hsqldb:hsql:"/>
<arg value="-database"/>
<arg value="//localhost:1701"/>
<arg value="-script"/>
<arg value="sql/hsql-reset-key.sql"/>
<classpath refid="hsql.classpath"/>
</java>
</target>
-->
<target name="clean">
<delete dir="${build.dir}" />
<mkdir dir="${build.dir}" />
</target>
<target name="db-all" depends="db-create-table,db-insert,db-list" />
<target name="all" depends="compile,package-ejb,package-web,package-client,assemble-app,deploy" />
</project>