使用Ant构建J2EE开发目录结构

企业应用程序由一个或多个 Web 应用程序模块、EJB 模块和资源适配器构成。其中也可能包括客户端应用程序。企业应用程序是由 application.xml 文件定义的,该文件是企业应用程序的标准 J2EE 部署描述符。如果应用程序包括 WebLogic Server 特定扩展,则该应用程序将由 weblogic-application.xml 文件进一步定义。包括客户端模块的企业应用程序还将具有 client-application.xml 部署描述符和 WebLogic 运行时客户端应用程序部署描述符。

 

  1. 对于开发目的,BEA 建议采用 WebLogic 拆分开发目录结构。拆分开发目录具有两个将源文件和输出文件分离开来的并行目录,而不是有一个单一的 EAR 归档文件或展开的 EAR 目录结构。这种目录结构已针对单个 WebLogic Server 实例上的开发进行了优化。
  2. 对于开发目的,BEA 还建议将独立 Web 应用程序和 Enterprise JavaBean (EJB) 作为企业应用程序的一部分进行打包,以便利用拆分开发目录结构。
  3. 对于生产目的,BEA 建议采用展开的(未归档的)目录格式。通过这种格式,不必重新部署应用程序就能更新文件。要更新归档文件,必须取消文件的归档,更新文件,然后重新将其归档和部署。
  4. 可使用 jar 实用工具将应用程序打包为带有 .ear 扩展名的 JAR 归档文件。归档文件易于分发,占用的空间也较小。EAR 文件含有应用程序的全部 JAR、WAR 和 RAR 模块归档文件,以及用于描述捆绑模块的 XML 描述符

BEA说了,独立 Web 应用程序也要作为企业应用程序的一部分进行打包,以便利用扩分开发目录结构。

  1. 首先创建一个WEB项目,项目名称testWebApp
  2. 在META-INF目录下创建企业应用程序的标准 J2EE 部署描述符 application.xml文件,内容如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd">
    <application>
    	<display-name>testWebApp</display-name>
    	<module>
    		<web>
    			<web-uri>testWebApp.war</web-uri>
    			<context-root>/</context-root>
    		</web>
    	</module>
    </application>
    
     
  3. 创建BEA Weblogic  特有weblogic.xml 部署描述符
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE weblogic-web-app
      PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
      "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
    
    <weblogic-web-app>
    	<context-root>/</context-root>
    </weblogic-web-app>
    
     
  4. 接下来最重要的就是编写ANT脚本。 
    <?xml version="1.0"?>
    <project name="testWebApp" default="dist" basedir=".">
    	<!--主要的系统环境属性-->
    	<property environment="env"/>
    	<!--取window,unix...的环境变量-->
    	<property name="java.home" value="${env.JAVA_HOME}"/>
    	<property name="ant.home"  value="${env.ANT_HOME}"/>
    	<property name="project.home" value="." />
    	<property name="project.name" value="${ant.project.name}" />
    	<property name="src.home" value="${project.home}/src" />
    	<property name="lib.home" value="${project.home}/WebRoot/WEB-INF/lib" />
    	<property name="classes.home" value="${project.home}/classes" />
    	<property name="dist.home" value="${project.home}/dist" />
    	<property name="web.home" value="${project.home}/WebRoot" />
    	<property name="build.home" value="${project.home}/build" />
    	<property name="build.classes" value="${build.home}/WEB-INF/classes" />
    	<property name="build.lib" value="${build.home}/WEB-INF/lib" />
    
    	<path id="compile.classpath">
    		<fileset dir="${lib.home}">
    			<include name="*.jar" />
    		</fileset>
    		<pathelement path="${java.home}/lib/tools.jar"/>
    	</path>
    
    	<target name="init" description="初始化并创建目录">
    		<echo>初始化并创建目录</echo>
    		<mkdir dir="${build.home}" />
    		<mkdir dir="${build.home}/WEB-INF" />
    		<mkdir dir="${build.home}/WEB-INF/classes" />
    		<mkdir dir="${build.home}/WEB-INF/lib" />
    		<mkdir dir="${dist.home}" />
    		<mkdir dir="${dist.home}/${project.name}/META-INF" />
    		<mkdir dir="${dist.home}/${project.name}/${project.name}.war" />
    	</target>
    
    	<target name="clean" description="删除所有目录与文件">
    		<echo>清理所有目录与文件</echo>
    		<delete dir="${build.home}" />
    		<delete dir="${dist.home}" />
    
    	</target>
    
    	<target name="compile" depends="init" description="编译JAVA文件">
    		<echo>编译JAVA文件</echo>
    		<javac srcdir="${src.home}" destdir="${build.classes}"  debug="yes" source="1.5">
    			<classpath refid="compile.classpath" />
    			<compilerarg value="-Xlint:unchecked" />
    
    		</javac>
    	</target>
    
    
    	<target name="dist" depends="compile" description="构建展开目录结构-开发模式">
    		<copy todir="${dist.home}/${project.name}/META-INF">
    			<fileset dir="${web.home}/META-INF" />
    		</copy>
    		<echo>复制JSP,XML等文件</echo>
    		<copy todir="${dist.home}/${project.name}/${project.name}.war">
    			<fileset dir="${web.home}" />
    		</copy>
    		<echo>删除META-INF</echo>
    		<delete dir="${dist.home}/${project.name}/${project.name}.war/META-INF" />
    	</target>
    
    	<target name="ear" depends="clean,dist" description="构建可发布ear包">
    		<jar destfile="${dist.home}/${project.name}.war" basedir="${dist.home}/${project.name}/${project.name}.war" />
    		<ear destfile="${dist.home}/${project.name}.ear" appxml="${dist.home}/${project.name}/META-INF/application.xml">
    			<fileset dir="${dist.home}">
    				<include name="${project.name}.war" />
    			</fileset>
    		</ear>
    		<echo>清理临时产生目录</echo>
    		<delete dir="${dist.home}/${project.name}" />
    		<echo>删除临时生成的WAR包</echo>
    		<delete file="${dist.home}/${project.name}.war" />
    	</target>
    
    </project>
    
      
  5. 分别打展开目录结构与可发布Ear包部署到weblogic 测试成功

 

你可能感兴趣的:(Web,xml,ant,weblogic,企业应用)