編譯
下面我們來教大家來使用ant來build這個工程。Ant是由apache.org組織來提供給java開發人員使用的如Unix平臺下的make一樣的工程編譯工程。它能自動識別我們要進行javac的java文件,將這些文件進行javac,再按照我們的要求來將這些class文件打包成為相應的jar包,當然也包括war文件(war文件也是一個jar文件,只是后綴名不同而已,都可以使用jar工具進行打包和解包)。我們先來看看我們為helloejb這個工程所寫的build.xml文件,這個文件內容如下:
<?xml version="1.0"?>
<!--
Build file for `orion-primer', an sample J2EE application.
Version: $Revision: 3.1 $ $Date: 2000/08/28 10:03:11 $
Author: Ernst de Haan
-->
<PROJECT basedir="." default="j2ee-ear" name="orion-primer">
<TARGET name="init">
<property name="name" value="helloejb"></property>
<property name="src.dir" value="src"></property>
<property name="lib.dir" value="lib"></property>
<property name="rel.dir" value="rel"></property>
<property name="orion.dir" value="c:orion"></property>
<property name="build.compiler" value="classic"></property>
</TARGET>
<TARGET name="clean" depends="init">
<DELTREE dir=${lib.dir}>
<DELTREE dir=${rel.dir}>
</TARGET>
<TARGET name="prepare" depends="init">
<MKDIR dir=${lib.dir}>
<MKDIR dir=${lib.dir}/ejb>
<MKDIR dir=${lib.dir}/ejb/META-INF>
<MKDIR dir=${lib.dir}/web>
<MKDIR dir=${lib.dir}/web/WEB-INF>
<MKDIR dir=${lib.dir}/web/WEB-INF/classes>
<MKDIR dir=${lib.dir}/j2ee>
<MKDIR dir=${lib.dir}/META-INF>
<MKDIR dir=${rel.dir}>
</TARGET>
<TARGET name="ejb-classes" depends="prepare">
<JAVAC
includes="java/net/chinacode/**"
classpath="${orion.dir}/ejb.jar" >
</TARGET>
<TARGET name="ejb-meta-inf" depends="prepare">
<COPYFILE
</TARGET>
<TARGET name="ejb-jar" depends="ejb-classes,ejb-meta-inf">
<JAR
</TARGET>
<TARGET name="web-classes" depends="prepare">
<JAVAC
includes="java/net/chinacode/web/**"
classpath="${lib.dir}/ejb:${orion.dir}/ejb.jar:${orion.dir}/jndi.jar:${orion.dir}/orion.jar" />
</TARGET>
<TARGET name="web-web-inf" depends="prepare">
<COPYFILE
dest="${lib.dir}/web/WEB-INF/web.xml" >
</TARGET>
<TARGET name="web-war" depends="web-classes,web-web-inf">
<JAR
</TARGET>
<TARGET name="j2ee-meta-inf" depends="prepare">
<COPYFILE
</TARGET>
<TARGET name="j2ee-ear" depends="ejb-jar,web-war,j2ee-meta-inf">
<COPYFILE
<COPYFILE
<JAR
</TARGET>
</PROJECT>
我們將這個xml文件存入hdsite/build.xml文件下。這個文件說明了我們去編譯整個工程的文件的步驟,同時也可以看到相應的配置文件也就是哪些xml文件是按一個什么樣的規則被打包到jar文件中去的。通過ant編繹后我們在hdsite/rel目錄下會得到helloejb-ejb.jar文件和helloejb-web.war文件以及helloejb.ear文件。如果需要了解ant的build.xml文件更為詳細的信息請到http://www.apache.org網站尋找相應的文檔。做好后,我們只要在hdsite目錄下運行ant就可以了,它會自動創建一系列的目錄,我們只需要得到rel目錄下的幾個包文件。如果只需要在一個orion服務器上運行servlet加ejb,哪么我們只需要一個ear文件就可以了。如果需要分開運行,哪么web容器就是war文件,jar文件就是ejb容器。
下面我們來在orion/config目錄下的server.xml文件中加入這一行:
<APPLICATION name="helloejb" path="c:hdsiteelhelloejb.ear">
這樣我們就說明了一個在server中運行的應用包或是目錄。同時我們也需要在web server的設置中說明一個虛似路徑到servlet上,將orionconfig中的default-web-site.xml文件中加入這樣一行:
<WEB-APP name="helloejb-web" root="/helloejb" application="helloejb">
這樣我們就說明了在缺省的web服務器中加入一個/helloejb的虛似路徑,并指向helloejb-web這個web容器。哪么大家會問,我們通過瀏覽器以什么樣的路徑會訪問到這個servlet呢?因為一個servlet沒有像html一樣是一個文件存在于web服務器可以訪問到的路徑。很簡單,我們可以看到在前面的web容器的配置說明文件web.xml中說明了一個servlet map將HelloServlet指向到了/,哪么我們訪問這個servlet的路徑就是http://hostname/helloejb/就可以了,如果我們在web.xml中將/改成/helloservlet,哪么我們訪問的路徑就是http://hostname/helloejb/helloservlet了。
<?xml version="1.0"?>
<!--
Build file for `orion-primer', an sample J2EE application.
Version: $Revision: 3.1 $ $Date: 2000/08/28 10:03:11 $
Author: Ernst de Haan
-->
<PROJECT basedir="." default="j2ee-ear" name="orion-primer">
<TARGET name="init">
<property name="name" value="helloejb"></property>
<property name="src.dir" value="src"></property>
<property name="lib.dir" value="lib"></property>
<property name="rel.dir" value="rel"></property>
<property name="orion.dir" value="c:orion"></property>
<property name="build.compiler" value="classic"></property>
</TARGET>
<TARGET name="clean" depends="init">
<DELTREE dir=${lib.dir}>
<DELTREE dir=${rel.dir}>
</TARGET>
<TARGET name="prepare" depends="init">
<MKDIR dir=${lib.dir}>
<MKDIR dir=${lib.dir}/ejb>
<MKDIR dir=${lib.dir}/ejb/META-INF>
<MKDIR dir=${lib.dir}/web>
<MKDIR dir=${lib.dir}/web/WEB-INF>
<MKDIR dir=${lib.dir}/web/WEB-INF/classes>
<MKDIR dir=${lib.dir}/j2ee>
<MKDIR dir=${lib.dir}/META-INF>
<MKDIR dir=${rel.dir}>
</TARGET>
<TARGET name="ejb-classes" depends="prepare">
<JAVAC
includes="java/net/chinacode/**"
classpath="${orion.dir}/ejb.jar" >
</TARGET>
<TARGET name="ejb-meta-inf" depends="prepare">
<COPYFILE
</TARGET>
<TARGET name="ejb-jar" depends="ejb-classes,ejb-meta-inf">
<JAR
</TARGET>
<TARGET name="web-classes" depends="prepare">
<JAVAC
includes="java/net/chinacode/web/**"
classpath="${lib.dir}/ejb:${orion.dir}/ejb.jar:${orion.dir}/jndi.jar:${orion.dir}/orion.jar" />
</TARGET>
<TARGET name="web-web-inf" depends="prepare">
<COPYFILE
dest="${lib.dir}/web/WEB-INF/web.xml" >
</TARGET>
<TARGET name="web-war" depends="web-classes,web-web-inf">
<JAR
</TARGET>
<TARGET name="j2ee-meta-inf" depends="prepare">
<COPYFILE
</TARGET>
<TARGET name="j2ee-ear" depends="ejb-jar,web-war,j2ee-meta-inf">
<COPYFILE
<COPYFILE
<JAR
</TARGET>
</PROJECT>
我們將這個xml文件存入hdsite/build.xml文件下。這個文件說明了我們去編譯整個工程的文件的步驟,同時也可以看到相應的配置文件也就是哪些xml文件是按一個什么樣的規則被打包到jar文件中去的。通過ant編繹后我們在hdsite/rel目錄下會得到helloejb-ejb.jar文件和helloejb-web.war文件以及helloejb.ear文件。如果需要了解ant的build.xml文件更為詳細的信息請到http://www.apache.org網站尋找相應的文檔。做好后,我們只要在hdsite目錄下運行ant就可以了,它會自動創建一系列的目錄,我們只需要得到rel目錄下的幾個包文件。如果只需要在一個orion服務器上運行servlet加ejb,哪么我們只需要一個ear文件就可以了。如果需要分開運行,哪么web容器就是war文件,jar文件就是ejb容器。
下面我們來在orion/config目錄下的server.xml文件中加入這一行:
<APPLICATION name="helloejb" path="c:hdsiteelhelloejb.ear">
這樣我們就說明了一個在server中運行的應用包或是目錄。同時我們也需要在web server的設置中說明一個虛似路徑到servlet上,將orionconfig中的default-web-site.xml文件中加入這樣一行:
<WEB-APP name="helloejb-web" root="/helloejb" application="helloejb">
這樣我們就說明了在缺省的web服務器中加入一個/helloejb的虛似路徑,并指向helloejb-web這個web容器。哪么大家會問,我們通過瀏覽器以什么樣的路徑會訪問到這個servlet呢?因為一個servlet沒有像html一樣是一個文件存在于web服務器可以訪問到的路徑。很簡單,我們可以看到在前面的web容器的配置說明文件web.xml中說明了一個servlet map將HelloServlet指向到了/,哪么我們訪問這個servlet的路徑就是http://hostname/helloejb/就可以了,如果我們在web.xml中將/改成/helloservlet,哪么我們訪問的路徑就是http://hostname/helloejb/helloservlet了。