正 文

J2EE打包与部署


www.7dspace.com  更新日期:2006-2-12 13:04:43  七度空间


1、部署描述文件

部署描述文件(deployment descriptors)描述部署单位内容并相对于应用环境配置组件和应用程序。同时对它们与组件之间的关系做出了一定的处理,从而可以在无需编程的情况下对这些关系加以管理。部署工具通常会自动生成部署描述文件,所以开发人员不必直接编辑和管理它们。

通常部署描述文件有四种类型,每种对应于一个类型部署单位:

    *EJB部署描述文件;
    *Web层部署描述文件;
    *应用客户部署描述文件;
    *资源适配器部署描述文件。

各种部署描述文件的定义都可以在相应的XML文档类型定义(document type definition)中找到。部署描述文件包含由组件容器使用的信息及组件通过JNDI访问的信息。

有关EJB部署、应用客户部署及资源适配器部署请读者参考有关J2EE资料,在此就不多说了,下面我们讨论一下Web层部署内容。

2、Web程序部署

Web程序的部署主要包括将Web程序以标准格式打包和将Web程序放入Web服务器中运行两步。Web程序的部署描述文件(deployment descriptor)建立了Web程序和Web程序服务器之间的信息交流。一个部署描述文件采用符合特定标准的格式来描述一个Web程序内的构件(如 servlet,filter,listener,JSP等)和使用方式(如安全机制、错误处理方法等)。当Web程序服务器启动并加载一个Web程序时,它会根据其部署描述文件设置其运行状态并初始化Web构件。

1)web.xml文件的格式

由于Web程序开发中各种人员有不同分工,而Web程序的部署描述文件是程序构件提供者、程序组装者和程序部署者之间的沟通机制;Servlet 2.4之前的版本规定了在Web服务器中使用DTD格式的web.xml,而Servlet 2.4将依照XML schema格式定义web.xml;实际上这两种格式的web.xml只是在头部有区别,其内容都是描述Web程序的部署信息。在web.xml中出现的部署元素主要包含以下信息:

    *ServletContext的初始化变量(Init Parameters);
    *交互会话(Session)的设置;
    *Servlet的声明定义;
    *Servlet和网址URL的映射(Mapping);
    *应用程序生命周期的监听器(Application Lifecycle Listener);
    *过滤器声明;
    *过滤器和网址URL或Servlet/JSP的映射;
    *MIME类型;
    *欢迎文件(Welcome File);
    *错误网页(Error Pages);
    *安全设置信息;
    *taglib配置;
    *JNDI对象(env-entry,ejb-ref,ejb-local-ref,resource-ref,resource-env-ref)。        

其中taglib配置与JNDI对象这两项是支持J2EE的Web服务器必须要求的。对于不支持J2EE的servlet/JSP服务器,不需要这两项;在web.xml中的元素需要按照规定的大小写和顺序出现。

2)Web程序结构和部署方式

在设置了部署描述文件后,需要对Web程序进行编译和打包,一个Web程序需要依照标准的目录和文件格式组织其内容。例如在Tomcat 5.0中的目录和文件格式,其中WEB-INF目录中有web.xml部署描述文件和包括该Web程序Java类的classes目录。在Web服务器中部署Web程序的方式有两种:一种是直接将依照标准格式的Web程序的整个目录编译后放入Web服务器的webapps目录,这样Web服务器启动时会自动加载Web程序;另一种是将Web程序编译并打包生成一个war文件,然后放入Web服务器的webapps目录。Web服务器可以选择不需解压直接加载这个Web程序的war文件,或者将这个war文件解压到一个目录后加载。在/conf/server.xml中可以设定选择何种加载方式。如果 <Host>标记的unpackWARs="flase",表明Web服务器不需要将war文件解压成目录;如果unpackWARs= "true",表明Web服务器会在第一次加载Web程序时将该war文件解压成一个目录。

<Host name="localhost" appBase="webapps" debug="0" unpackWARs="false">

第二种方式的优点是增强了Web程序的可移植性,一个war文件可以在不同的符合标准的Web服务器中运行而且文件比较小;当需要将Web程序给予其他人员时,给对方一个war文件当然比给一个目录方便;但是生成war文件需要将一个Web程序的目录进行压缩,在调试过程中,如果编程者需要经常对程序的某些部分进行改动,使用第一种方式就比较方便。每次需要改动时就在webapps的Web程序目录中用改动的文件替代旧的文件,而不用每次打包生成war文件。

3)使用编程工具编译和打包

一个war文件就是有特定格式(如WEB-INF目录)的 jar文件,它将一个Web程序的所有内容进行压缩。在生成war文件之前,所有WEB-INF/classes目录下面的servlet,filter 等类需要首先被成功编译,最基本的方法是直接使用javac命令编译所有的类。需要注意的是classpath环境变量要包括最新的servlet和 JSP的jar,为了简单高效地编译Web程序并进行打包,可以使用提供Web程序管理功能的开发工具(IDE),比如Sun的Forte for Java IDE提供非常方便的Web程序开发环境,它可以统一管理程序的classpath和Java文档,用来编写大型的J2EE程序非常方便。可以使用Web 服务器的deploytool打包,比如sun的JWSDP1.0就提供了一个图形界面的deploytool;也可以使用Apache软件组织开发的 Ant(蚂蚁)工具进行编译和打包,完成Web程序部署。

参考资料

《Java 2 参考大全》       Herbert Schildt        清华大学出版社

《Java 2 应用开发指南》    飞思科技产品研发中心  电子工业出版社

《21天学通J2EE》           Martin Bond           人民邮电出版社

作者:务实,多年从事J2EE网站及应用系统项目的开发和应用。

7页,页码:[1] [2] [3] [4] [5] [6] [7] 

上一篇:J2EE体系结构设计
下一篇:为Java应用程序的开发而配置vi
标题:J2EE打包与部署 作者:务实 来源:开发者在线
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐