作者:自由的猪 制作整理:左岸网络http://www.leftworld.net |
||||||||||||||||||||||
|
第1章总括 今天,越来越多的开发人员都想编写分布式的,事务型的企业及应用程序,以及平衡速度、安全及服务器方可靠度的技术。如果你已经在这个领域工作,你应该知道在当今的快速变换及需求的电子商务及信息技术的世界里,企业应用程序需要设计、编译、产生低价位的、高速的、占用少量资源的程序。 为了缩减开发成本,快速跟踪企业应用的设计和开发,J2EE技术提供了基于组件的设计方法,开发、集成、部署应用程序。J2EE平台提供了多层分布式应用模式,使具有重用的能力,并集成了基于XML的数据交换——一个统一的安全模式及灵活的事务控制。 J2EE平台使用多层分布式的应用模式。应用逻辑根据其功能分成多个组件,各种不同的应用组件构成分布在不同的依赖于层的机器上的J2EE程序。下面列出了位于不同层的组件 ☆ 运行在客户机上的客户层组件 ☆ 运行在J2EE服务器上的网络层 ☆ 运行在J2EE服务器上的逻辑层 ☆ 运行在EIS服务器上的企业信息层 尽管J2EE应用程序可以由三层或四层构成,J2EE应用程序通常由三层构成,因为他们分布于三个不同的位置:客户及,服务器,后台数据库服务器。通过这种方式运行的三层应用模式拓展了基于客户/服务的两层模式。 J2EE组件 J2EE应用程序由组件构成。一个J2EE组件是自包含的,与其相关的语气它组件通信的类及文件集成到J2EE应用程序的功能软件单元。J2EE规范定义了下面一些组件: ☆ 运行在客户端的应用客户程序及小程序。 ☆ 运行于服务器网络的Servlet&Jsp组件。 ☆ 运行于服务端的企业逻辑组件——EJB。 J2EE组件用Java语言编写,通过相同的方法编译。J2EE组件与标准Java类的不同之处在于J2EE组件集成到了应用程序中,证明能很好的组成,与J2EE规范兼容,并部署到负责运行、管理的J2EE服务器上。J2EE客户端 J2EE客户端可以使网络浏览器也可以是桌面应用程序。网络浏览器 网络客户程序由两部分组成:动态网页包含各种标记语言(HTML,XML等),它由运行于网络层的网络组件产生,浏览器从服务器接受信息并反馈到页面上。 网络客户端又称为瘦客户。瘦客户端通常不运行像查询数据库,执行复杂的业务规则,或连到合法的应用程序。当你使用瘦客户时,重量级的操作都载入到运行于J2EE服务器上的企业Bean,它能够均衡安全,速度,服务及可靠性。 小程序 网页可以包含小程序。小程序是一个较小的用java语言编写的程序,并能通过安装在浏览器上的虚拟机运行。 网络组件首选API,它可以创建网络客户层,因为在客户系统中它不需要插件或安全策略文件,宁外,网络组件能提供更干净的,模块化的应用设计,因为它将程序设计与页面设计相分离。这样,页面设计人员可以进行页面设计而不需要懂Java程序设计。 应用客户端 J2EE应用客户端运行在客户上,它为用户处理任务提供了比标记语言丰富的接口。典型的是它拥有通过Swing&AWTAPI建立的图形用户界面,基于命令行的接口也是可以的。应用客户端可以直接调用业务逻辑层的企业bean。 JavaBean组件结构 服务端及客户端也可以包含基于JavaBean组件来管理客户端与运行于服务端的组件间的数据流或服务端组件与数据库间的数据流。J2EE规范没有认为JavaBean为j2EE组件。JavaBean组件有实例变量和get,set方法来设置、获取变量值。 网络组件 J2EE网络组件可以是servlet或jsp。Servlet是java类,它能动态处理请求及响应。Jsp页面是基于文档的,能像servlet一样执行的能允许更多的静态页面内容。 静态HTML页面及applets域网络组件绑在一起,但J2EE规范没有认为这些为网络组件。 网络层可以包含JavaBean组件来管理用户输入、发送输入道逻辑层的EJB以处理。 业务逻辑组件 业务逻辑代码是解决、达到特定业务领域的需求,如银行、零售、金融,又EJB处理的业务逻辑层。 企业Bean可以重新从存储器找回数据,如果必要并处理它,然后发送到客户程序。 总共有三种EJB:会话bean,实体bean,消息驱动bean。 会话bean代表短暂的与客户的会话,当客户结束执行时,会话bean及它的数据就消失了。与会话bean相比,实体bean代表存储在数据库的表,如果客户结束程序或服务器关闭,潜在的服务方法会将数据存储。 瘦客户端的多层应用程序总是很难开发,因为它包括各个层的事务处理、状态管理、多线程、资源池和其他复杂底层细节等等的错综复杂的编码。但是基于组件和平台独立的J2EE平台使J2EE应用程序容易开发,因为商业逻辑被封装在可重用的组件(EJB)中。另外J2EE服务器以容器的形式为所有组件提供底层服务,因此你不必再为这些底层服务二伤脑筋,而可以专注于解决商业问题。 容器服务 容器(Container)是组件和支持组件功能的底层特定平台(如数据库)之间的接口。在运行Web组件、企业Bean或者J2EE应用程序客户端之前,你必须将它们装配到一个J2EE应用程序中,并部署它们到容器中。 装配的过程包括为J2EE应用程序的每个组件 和J2EE应用程序本身设置容器的配置信息。这些配置信息定制J2EE服务器支持的底层服务,包括安全,事务管理,Java命名和目录接口(JNDI)查找和远程连接等。下面使这些服务的精简描述: ☆ J2EE安全模型让你配置Web组件或者企业Bean以使系统资源只被授权用户访问 ☆ J2EE事务模型让你指定属于同一个事务的多个方法以使这些方法作为一个原子操作被执行 ☆ JNDI查找服务为企业应用中的多种命名和目录服务提供统一接口使应用程序组件可以统一访问这些命名和目录服务。 ☆ J2EE远程连接模型管理客户端和企业Bean之间的底层通信。企业Bean被创建后,客户端调用它的方法就像在本地虚拟机中的调用一样。 事实上,J2EE体系结构提供可配置服务意味着同一个J2EE应用程序中的组件可以根据不同的部署环境而有不同的行为。例如,一个企业Bean的安全配置可以使它在一种产品环境中有一个级别的数据库数据访问权限,而在另一种产品环境中有不同的数据库数据访问权限。 容器也管理着很多不可配置的服务,如企业Bean和Servlet的生命周期,数据库连接池,数据持久化机制和J2EE平台API的访问权等等。尽管数据持久化机制是不可配置服务,但是J2EE体系结构允许你忽略容器管理的持久性(Container-Managed Persistence,CMP)机制在企业Bean实现中加入合适的代码,当然除非你确实需要比容器管理持久性机制提供的更多的应用程序控制权,否则使用容器管理的持久性。例如你可以用Bean管理的持久性(Bean-Managed Persistence,BMP)机制来实现自己的查找方法或者创建一个定制的数据库缓冲池。 容器类型 部署过程将J2EE应用程序安装到J2EE容器中。图1-5展示了组件在容器中的情况: 图 1-5 J2EE 服务器和容器(Container) J2EE server(J2EE服务器) J2EE产品的运行时服务部分。一个J2EE服务器提供EJB容器(EJB Container)和Web容器(Web Container)。 EJB容器 管理J2EE应用程序中企业Bean的运行。企业Bean和它们的容器在J2EE服务其中运行。 Web容器 管理J2EE应用程序中JSP页面和Servlet组件的运行。Web组件和容器也在J2EE服务其中运行。 Application client container(应用程序客户端容器) 管理应用程序客户端组件的运行。应用程序客户端和它的容器运行在客户机。 Applet container(Applet容器) 管理Applet的运行。由在客户端运行的浏览器和Java插件组成。 J2EE组件都分开打包然后组装成一个J2EE应用程序来部署。每一个组件用到的文件如GIF、HTML文件或者服务器端的实用类文件等,再加上一个部署描述符文件都被装配到一个模块然后加入到J2EE应用程序中。一个J2EE应用程序由一个或多个企业Bean组件模块、Web组件模块和应用程序客户端组件模块组成。最终企业解决方案会根据设计需要由一个或者多个J2EE应用程序组成。 J2EE应用程序和它的每一个组成模块都有自己的部署描述符文件。部署描述符文件是描述组件部署配置信息的XML文件。例如,一个企业Bean的部署描述符文件声明了企业Bean的事物属性和安全授权。由于这种简单的声明形式,可以在不修改Bean的源代码的情况下修改这些信息。运行时,J2EE服务器读取部署描述符并根据读取信息在组件上执行相应动作。 J2EE应用程序和它的所有模块都被打包到一个EAR(Enterprise Archive)文件中。EAR文件是后缀为.ear的标准JAR(Java Archive)文件。(在J2EE SDK提供的GUI版的应用程序部署工具中,需要先创建一个EAR文件然后将JAR和WAR(Web Archive)文件加到EAR中。而命令版本的部署工具正好相反。)下面是这些打包文件的描述: ☆ EJB JAR文件包含一个部署描述符文件,企业Bean文件和用到的其他文件 ☆ 应用程序客户端JAR文件包含一个部署描述符文件,客户端类文件和其他用到的文件 ☆ WAR文件包含一个部署描述符文件,Web组件(JSP和Servlet)文件和用到的其他文件 使用模块和EAR文件的打包方式,使用相同的组件装配成不同的应用程序成为可能,而且不需要额外的编码,只需要将用到的J2EE模块的任意组合装配成一个J2EE EAR文件。 可重用的的模块使将应用程序的开发和部署分配给不同的角色成为可能,因此不同的个人或者团队可以更好的分工合作。 在整个过程中,最先的两个角色提供J2EE产品和工具,搭建开发平台。平台OK之后,由应用程序组件提供者开发J2EE组件,然后应用程序装配者为特定应用装配需要的组件,最后由应用程序部署者来部署应用程序。在大的组织中,这些角色都由不同的个人或者团队来执行。这样的分工使得上一个角色的产品成为下一个角色的原料,更重要的是每个环节的产品都很轻便(portable)以方便下一环节的工作。例如在应用程序开发阶段,企业Bean开发者提供EJB JAR文件,而作为应用程序装配者的其他开发者将这些EJB JAR文件组装成J2EE应用程序并保存在EAR文件中,作为应用程序部署者的消费者站点的系统管理员用EAR文件将J2EE应用程序安装到J2EE服务器中。 当然不同的角色并不总是由不同的人来执行。例如你在一个小公司开发一个原型系统,你可能同时充当多种角色。 J2EE产品提供商 J2EE产品提供商设计并实现J2EE规范定义的J2EE平台、API和其他特性。典型的J2EE产品提供商如操作系统、数据库系统、应用服务器、Web服务器厂商,它们根据Java2平台企业版规范实现J2EE平台。 工具提供商 工具提供商是那些提供开发、装配和打包工具的组织或个人。组件开发者、装配者和部署者使用这些工具来工作。 应用程序组件开发者 应用程序组件开发者是开发J2EE应用程序可使用的企业Bean、Web组件、Applet和应用程序客户端组件的组织或个人。 企业Bean开发者 企业Bean开发者提供企业Bean的EJB JAR文件,他的工作步骤如下: ☆ 编写并编译源文件 ☆ 配置部署描述符文件 ☆ 将编译后的类文件和部署描述符文件打包为一个EJB JAR文件 Web组件开发者 Web组件开发者的工作任务是提供WAR文件: ☆ 编写并编译servlet源文件 ☆ 编写JSP和HTML文件 ☆ 配置部署描述符文件 ☆ .class、.jsp、.html和部署描述符文件打包为一个WAR文件 J2EE应用程序客户端开发者 应用程序客户端开发者也提供一个JAR文件: ☆ 编写并编译源文件 ☆ 配置部署描述符文件 ☆ 将.class类文件和部署描述符文件打包进一个JAR文件 应用程序组装者 应用程序组装者将从组件开发者获得的组件文件装配成一个J2EE应用程序EAR文件。组装者可以编辑部署描述符文件。组装者的任务: ☆ 组装EJB JAR和WAR文件到一个J2EE应用程序EAR文件 ☆ 配置J2EE应用程序的部署描述符文件 ☆ 确认EAR文件的内容符合J2EE规范 应用程序部署者和系统管理员 应用程序部署者和系统管理员配置和部署J2EE应用程序,在程序运行时管理计算机和网络结构,并且监控运行时环境。包括设置事务控制、安全属性和指定数据库连接。 部署者和系统管理员的任务如下: ☆ 将J2EE应用程序EAR文件添加到J2EE服务器 ☆ 修改J2EE应用程序的部署描述符为特定运行环境配置应用程序 ☆ 部署J2EE应用程序到J2EE服务器 本书使用J2EE SDK,它是Sun公司教学用J2EE平台,包括J2EE应用服务器,Web服务器,关系数据库,J2EE API和一整套开发部署工具。从以下网址可以下载: http://java.sun.com/j2ee/download.html#sdk 数据库访问 J2EE SDK并不支持所有的数据库,而且版本不同支持的数据库也不同。 J2EE API J2EE1.3 API包括EJB2.0、JDBC API2.0、Servlet2.3、JSP1.2、JMS1.0、JNDI1.2、JTA1.0、JavaMail API1.2、JAF1.0、JAXP1.1、JCA1.0和JAAS1.0。 简化系统集成 J2EE平台的平台独立特性和完整的系统集成解决方案建立了一个开放的市场是用户可以使用任何厂商的产品。这样厂商就必须提共更有利于客户的产品和服务以争取用户。J2EE API通过提供以下功能简化应用程序集成: ☆ 企业Bean的统一应用程序访问接口 ☆ JSP和Servlet的单一请求和应答机制 ☆ JAAS的可靠安全模型 ☆ JAXP提供基于XML的数据交换集成 ☆ JCA提供的简单互操作能力 ☆ JDBC API提供的简单数据库连接能力 ☆ 消息驱动Bean、JMS、JTA和JNDI技术提供企业应用集成 以下网址由关于集成的J2EE平台应用程序集成的详细信息: http://java.sun.com/j2ee/inpractice/aboutthebook.html 工具 J2EE SDK提供应用程序部署工具和一组组装、检验和部署J2EE应用程序和管理开发环境的脚本。 应用程序部署工具 该工具提供组装、检验和部署J2EE应用程序的功能。它还提供以下向导: ☆ 打包、配置和部署J2EE应用程序向导 ☆ 打包和配置企业Bean向导 ☆ 打包和配置Web组件向导 ☆ 打包和配置应用程序客户端向导 ☆ 打包和配置资源适配器向导 同时这些配置信息也可以在组件和模块的相应选项页里设置。 脚本 表1-1列出了J2EE SDK提供的脚本:
|
||||||||||||||||||||||