技术开发 频道

基于SPRING框架的MVC应用开发

第三步:将这个应用部署到Tomcat上去

下一步,我写了个Ant的编译脚本,自始至终我们这个文档里都要用到这个脚本来完成编译和部署应用的任务。一个单独的编译脚本涵盖了应用服务器端一些特别的任务,还有一些在Tomcat下控制应用的任务。
springapp/build.xml <?xml version="1.0"?> <project name="springapp" basedir="." default="usage"> <property file="build.properties"/> <property name="src.dir" value="src"/> <property name="web.dir" value="war"/> <property name="build.dir" value="${web.dir}/WEB-INF/classes"/> <property name="name" value="springapp"/> <path id="master-classpath"> <fileset dir="${web.dir}/WEB-INF/lib"> <include name="*.jar"/> </fileset> <!-- 我们需要servlet API classes: --> <!-- 如果是Tomcat 4.1的话,用 servlet.jar --> <!-- 如果是Tomcat 5.0的话,用 servlet-api.jar --> <!-- 如果是其他应用服务器的话,参照其相应文档 --> <fileset dir="${appserver.home}/common/lib"> <include name="servlet*.jar"/> </fileset> <pathelement path="${build.dir}"/> </path> <target name="usage"> <echo message=""/> <echo message="${name} build file"/> <echo message="-----------------------------------"/> <echo message=""/> <echo message="Available targets are:"/> <echo message=""/> <echo message="build --> Build the application"/> <echo message="deploy --> Deploy application as directory"/> <echo message="deploywar --> Deploy application as a WAR file"/> <echo message="install --> Install application in Tomcat"/> <echo message="reload --> Reload application in Tomcat"/> <echo message="start --> Start Tomcat application"/> <echo message="stop --> Stop Tomcat application"/> <echo message="list --> List Tomcat applications"/> <echo message=""/> </target> <target name="build" description="Compile main source tree java files"> <mkdir dir="${build.dir}"/> <javac destdir="${build.dir}" target="1.3" debug="true" deprecation="false" optimize="false" failonerror="true"> <src path="${src.dir}"/> <classpath refid="master-classpath"/> </javac> </target> <target name="deploy" depends="build" description="Deploy application"> <copy todir="${deploy.path}/${name}" preservelastmodified="true"> <fileset dir="${web.dir}"> <include name="**/*.*"/> </fileset> </copy> </target> <target name="deploywar" depends="build" description="Deploy application as a WAR file"> <war destfile="${name}.war" webxml="${web.dir}/WEB-INF/web.xml"> <fileset dir="${web.dir}"> <include name="**/*.*"/> </fileset> </war> <copy todir="${deploy.path}" preservelastmodified="true"> <fileset dir="."> <include name="*.war"/> </fileset> </copy> </target> <!-- ============================================================== --> <!-- Tomcat的任务 – 如果你装的不是Tomcat,不要使用以下任务 --> <!-- ============================================================== --> <taskdef name="install" classname="org.apache.catalina.ant.InstallTask"> <classpath> <path location="${appserver.home}/server/lib/catalina-ant.jar"/> </classpath> </taskdef> <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"> <classpath> <path location="${appserver.home}/server/lib/catalina-ant.jar"/> </classpath> </taskdef> <taskdef name="list" classname="org.apache.catalina.ant.ListTask"> <classpath> <path location="${appserver.home}/server/lib/catalina-ant.jar"/> </classpath> </taskdef> <taskdef name="start" classname="org.apache.catalina.ant.StartTask"> <classpath> <path location="${appserver.home}/server/lib/catalina-ant.jar"/> </classpath> </taskdef> <taskdef name="stop" classname="org.apache.catalina.ant.StopTask"> <classpath> <path location="${appserver.home}/server/lib/catalina-ant.jar"/> </classpath> </taskdef> <target name="install" description="Install application in Tomcat"> <install url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${name}" war="${name}"/> </target> <target name="reload" description="Reload application in Tomcat"> <reload url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${name}"/> </target> <target name="start" description="Start Tomcat application"> <start url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${name}"/> </target> <target name="stop" description="Stop Tomcat application"> <stop url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${name}"/> </target> <target name="list" description="List Tomcat applications"> <list url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}"/> </target> <!-- End Tomcat tasks --> </project>
这个脚本现在包含了所有可以使我们开发任务更简单的目标。对这个脚本,我这里不会过多赘述,因为绝大部分任务都是Ant和Tomcat里最基本的内容。你所需要做的就是将上面这个编译脚本拷贝到你开发环境的根目录下。我们还需要一个“build.properties”的文件,你需要做一些处理来适应你自己的服务器端的环境。这个文件要放在与“build.xml”文件相同的目录下。
springapp/build.properties # Ant的属性文件,用来编译应用 springapp appserver.home=${user.home}/jakarta-tomcat-5.0.28 deploy.path=${appserver.home}/webapps tomcat.manager.url=http://localhost:8080/manager tomcat.manager.username=admin tomcat.manager.password=tomcat
如果你对Tomcat所安装的系统没有所有权(读写和执行的权利),Tomcat的所有者必须将对“webapps”目录的所有权利授予你,或者他必须在“webapps”目录下创建一个新的“springapp”的目录,然后授予你在这个目录下部署应用的权限。在Linux/Unix上,“chmod a+rwx springapp”的命令将授予所有人对该目录的所有权限。

现在,我来执行Ant,确保一切都没有问题。你需要将当前目录设为“springapp”目录。

[<useraccount> @localhost springapp]$ ant Buildfile: build.xml usage: [echo] springapp build file [echo] ----------------------------------- [echo] Available targets are: [echo] build --> Build the application [echo] deploy --> Deploy application as directory [echo] deploywar --> Deploy application as a WAR file [echo] install --> Install application in Tomcat [echo] reload --> Reload application in Tomcat [echo] start --> Start Tomcat application [echo] stop --> Stop Tomcat application [echo] list --> List Tomcat applications BUILD SUCCESSFUL Total time: 2 seconds
最后要做的是实际去将部署完成。再一次执行Ant,同时指明“deploy”或“deploywar”作为目标任务。

[<useraccount>@localhost springapp]$ ant deploy Buildfile: build.xml build: [mkdir] Created dir: /Users/< useraccount >/projects/springapp/war/WEB-INF/classes deploy: [copy] Copying 2 files to /Users/<useraccount>/jakarta-tomcat-5.0.28/webapps/springapp BUILD SUCCESSFUL Total time: 2 seconds
0
相关文章