J2EE体系结构.docx
- 文档编号:10316597
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:16
- 大小:159.07KB
J2EE体系结构.docx
《J2EE体系结构.docx》由会员分享,可在线阅读,更多相关《J2EE体系结构.docx(16页珍藏版)》请在冰豆网上搜索。
J2EE体系结构
目录
一.J2EE体系结构简介3
二.命名和目录服务5
三.安全性和事务处理管理5
四.事务处理管理6
五.JavaServlets8
六.Java服务器页面8
七.数据库访问服务(JDBC)9
八.Java消息传送服务(JMS)9
九.Java接口定义语言(IDL)10
十.EnterpriseJavaBean(EJB)10
1.SessionBean10
2.EntityBean11
3.MessageDrivenBean11
十一、RMI支持服务12
十二、J2EE客户端13
1多台客户端14
2、JavaScript、DHTML和样式14
J2EE体系结构
中科院计算机培训中心
一.J2EE体系结构简介
J2EE是针对web服务、业务对象、数据访问和消息传送的一组规范。
这组应用编程接口(API)确定了web应用与驻留它们的服务器之间的通信方式。
J2EE注重两件事,一是建立标准,使web应用的部署与服务器无关;二是使服务器能控制组件的生命周期和其它资源,以便能够处理扩展、并发、事务处理管理和安全性等问题。
J2EE平台为设计、开发、安装和部署企业应用提供基于组件的方法。
这种方法不但能降低成本,还能快速跟踪设计和实施。
J2EE平台能提供多层分布式应用模型,重复利用组件,提供统一安全模式,并灵活地控制事务处理。
借助J2EE,不但能更快地将客户解决方案推向市场,还能使基于J2EE组件、不依赖于平台的解决方案不被锁定到任何厂商的产品和API上。
J2EE规范定义了以下几种组件:
•应用客户端组件
•EnterpriseJavaBeans组件
•Servlets和JavaServerPages(JSP)组件(也称为web组件)
•小应用程序(Applet)
多层分布式应用模型意味着应用逻辑将根据功能分成几个部分,用户可以在相同或不同的服务器上安装由不同应用组件组成的J2EE应用。
应用组件的安装位置取决于应用组件在多层J2EE环境中属于哪一层。
这些层次定义如下,参见
Figure41。
1.客户端层
可以是在客户端层内运行的浏览器、基于Java的程序或者其它web型编程环境——在公司防火墙内部和外部。
2.应用服务器层
一般情况下,此层包含支持客户端请求的表示逻辑和业务逻辑。
表示层由显示HTML页面的JSP页面和servlets实现。
业务逻辑通过RMI对象和EJB实现。
EJB依靠Container实现事务处理、生命周期和状态管理、资源池、安全等问题,简言之,
Container就是EJB依赖执行的运行环境。
3.后端层
此层是现有应用和数据仓库的组合,也称为企业信息系统(EIS)层,因为它可以包含企业资源规划(ERP)、大型主机事务处理、数据库系统及其它遗留下来的信
息系统等许多系统。
Figure41J2EE典型体系结构
二.命名和目录服务
由于J2EE应用的组件可以独立运行,而且通常是在不同设备上运行,因此客户端和应用服务器层代码必须以某种方式查找和参考其它代码和资源。
客户端和应用代码使用Java命名和目录接口(JNDI)查找用户定义对象(如EnterpriseBeans)和环境实体(EnvironmentEntries)(如用于查找后端层中资源如JDBCDataSource对象的位或是用于与Java消息服务通讯的联接)。
WLS6.0版,DataSources可以绑定到JNDI上,并由以后的应用访问。
这是JDBC2.0的特性。
三.安全性和事务处理管理
安全性和事务处理管理等应用行为可以在进行web和EJB组件部署时配置。
这个特性
可以将应用逻辑与不同的配置设置分离开来。
3.1安全性
J2EE安全模型可用于配置web或EJB组件,目的是只允许授权用户访问系统资源。
例如,web组件可配置为提示输入用户姓名和口令。
EJB组件可配置为只允许某些组内的人请求某些方法。
同样,servlet组件也可以配置为允许所有人访问其方法,或根据HTTP请求方式来进行安全认证。
servlet组件还可以为另一环境配置,允许所有人访问所有方法,或者只允许一些人访问所有方法。
WebLogicServer拥有非常强大的访问控制列表(ACL)机制,可以精确控制服务器上运行的组件的使用权限。
它允许在Java方法等级确定哪个或哪组用户可以或不可以执行哪些操作。
这种ACL机制包含WebLogic上运行的一切,但EJB除外。
EJB有自己的访问控制机制,定义在EJB规范中。
安全领域使管理员能将信息从现有授权或认证系统输入到ACL中。
因此,用户可以从NT安全系统、LDAP系统、Unix口令文件或数据库中导入信息,以这些安全领域用户的身份来进行访问。
WebLogic的安全性相对完整,它包含以下协议的所有等级:
•SSL版本3
•RSA加密
•支持X.509证书,版本3
与安全性相关的另一功能是防火墙通道。
WebLogic能通过HTTP和HTTPS通道穿越防火墙。
WebLogic还包括安全审计和登录界面,以便建立自己的安全审计机制,产生审计跟踪,登记安全敏感型系统事件。
四.事务处理管理
J2EE事务处理模型可以在部署过程中定义组成一个事务处理的方法之间的关系,以便事务处理中的所有方法可以作为一个整体存在。
用户一定希望完成这一任务,因为事务处理是一系列步骤,要么全部执行成功,要么全部回滚。
例如,EJB中可能有一系列方法,其作用是将资金从一个帐户转移到另一个帐户,方
法是借记第一个帐户和贷记第二个帐户。
用户可能希望将全部操作作为一个整体,这样,如果借记之后、贷记之前出现故障,借记将滚回。
事务处理属性在应用组件的集成过程中上确定。
它可以将各种方法组合成应用组件间
的事务处理,即用户可以在J2EE应用中容易地重新分配应用组件的事务处理属性,无需修改代码和重新编译。
Java事务处理API(JTA)和Java事务处理服务(JTS)形成J2EE中事务处理支持的基础,而且更适合EJB和JDBC2.0。
JTS是低级事务处理管理API,主要作用是将Java映射到对象管理组(OMG)的对象事务处理服务。
JTA是高级API,包括两个部分:
1.事务处理接口
允许事务处理定界。
完成工作的方式是分布式组件由全局事务处理登记。
这种方法可以令多组操作组成一个事务处理。
2.XA资源接口
基于能处理分布式事务处理的X/Open/XA接口,有时也称为两步提交事务处理,需要多种资源之间的协调,如数据库或序列。
WebLogicServer支持多种事务处理,包括EJB、JMS和JDBC操作。
分布式事务处理由两步提交协议协调,可跨越用XA兼容的JDBC驱动程序访问的多个数据库,如针对Oracle/XA的BEAWebLogicjDriver。
EJB规范定义了Bean管理的事务处理和Container管理的事务处理。
当EJB用Container管理的事务处理部署时,WebLogicServer将自动协调事务处理。
如果EJB由Bean管理的事务处理部署,EJB参数必须提供事务处理代码。
基于JMS或JDBCAPI的应用代码可以启动事务处理,或参与先前启动的事务处理。
一个事务处理联系与执行应用的WebLogicServer线程相关,所有事务处理操作都在参与当前事务处理的线程上执行。
多数情况下,用户无需担心用JTA编写明确事务处理的问题,因为此项工作由JDBC完成,EJBAPI由Container处理,并由应用部署说明符配置。
这样,用户就可以将精力集中在事务处理设计而非实施上。
五.JavaServlets
Servlet指可以扩展Web服务器功能的程序。
Servlet从客户端接受请求,动态生成响应
(可以通过查询数据库满足请求),然后将包含HTML或XML文档的请求发送到客户端。
Servlets类似于CGI,但更易于编写,因为Servlets使用Java类和流。
它们的执行速度
也更快,因为Servlets可编译为Java字节代码,在运行时,Servlet例程驻留在内存中――每
个客户端请求都生出一条新线程。
Servlets易于以动态形式向HTTP响应流产生数据。
Servlets面临的问题是无状态协议,这就是说,每个请求都作为新连接执行,因而请求
之间无法实现自然的流控制。
对话跟踪或对话管理能保持请求间特定客户端的状态。
在WebLogic中,Servlets使用HTTPSession对象保持方法请求之间的状态。
这种对象可以在集群环境中复制,用于恢复。
六.Java服务器页面
JSP页面是基于文本的Servlets开发方式。
JSP页面提供Servlets的所有优点,如果与JavaBeans类结合在一起,可以容易地将内容和显示逻辑分开。
将内容和显示逻辑分开的优点是无需了解Java代码就能更新页面的外观,更新JavaBeans等级的人也无需深入了解web页面的设计。
JSP页面和Servlets都比通用网关接口(CGI)应用广泛,因为CGI依赖于平台,消耗资源更多,而且程序不能容易地访问参数数据。
用户可以使用带JavaBeans的JSP页面定义Web模板,以便建立由外观相似的页面组成的web站点。
JavaBeans等级负责呈递数据,因此模板没有Java代码,这意味着Java代码可以由HTML编辑器持有。
如果有使用JSP页面的简单Web应用,可以借助定制标记或脚本将内容与应用逻辑捆绑在一起,而无需再使用JavaBeans。
定制标记与输入到JSP页面的标记库捆绑在一起。
脚本是一些小Java代码段,直接嵌入在JSP页面中。
七.数据库访问服务(JDBC)
JDBC是关系数据库的必要便携桥接器。
它遵守ODBC(开放数据库连接)规范,简单而易于理解。
它借助驱动程序将数据库与程序代码分开。
WebLogic的JDBC支持高级数据类型,如Blobs、Clobs和Oracle字符流。
它还支持可滚
回结果集和批更新功能。
尽管连接池是JDBC2规范的新特性,但已经得到WebLogic的多年支持。
驱动程序共有四种:
1.第一种是JDBC-ODBC桥,与JDK一起配合。
它更象一种概念证明,还不能用于正式的生产环境。
借助它,可以将应用与任何ODBC源连接在一起。
.
2.第二种驱动程序借助本地库与关系数据库通信,例如在Oracle中是OCI库。
这意味着必须在客户端上提供本地库。
3.第三种驱动程序是多层的,即驱动程序位于客户端和RDBMS中间。
它建立与
RDBMS的连接,是所有请求和响应的通道。
客户端只需加载纯Java就能与第三种驱动程序通信。
4.第四种驱动程序与第二种驱动程序相似,但它不使用本地库,而是借助专用协议直接与RDBMS通信。
八.Java消息传送服务(JMS)
JMS是支持Java程序间消息交换的J2EE机制。
这也是Java支持异步通信的方法――发送者和接收者无需相互了解,因而可以独立操作。
JMS支持两种消息传送模式:
1.点到点(PointToPoint)
基于消息队列。
消息产生者将消息发送到队列中。
消息消费者可以将自身与队列连接,以倾听消息。
当消息到达队列时,客户可以从队列中取走,并给出响应。
消息只能发送到一个队列,只能由一位消费者使用。
消费者可以过滤消息,以便获得希望获得的消息。
2.出版和订阅(Publish/Subscribe)
消息生产者将消息发送到一个话题(Topic),注册到此话题的消费者都能接收到这些消息。
这种情况下,许多消费者都能接收到同样的消息。
九.Java接口定义语言(IDL)
CORBA对象使用IDL确定接口(怎样与其它对象交互)。
借助JavaIDL,可以定义Java应用和CORBA应用之间的合同。
为使用JavaIDL,应使用可以产生便携客户端树桩(Stub)和服务器树干(Skeleton)的idltojava编译器,此编译器可以与任何CORBA兼容型对象请求代理(ORB)一起使用。
从Sun的JDK1.2开始包含ORB,使Java应用能通过IIOP协议请求远程CORBA对象。
十.EnterpriseJavaBean(EJB)
EJB组件用于封装业务逻辑,使开发人员无需再担心数据访问、事务处理支持、安全性、高速缓存和并发等琐碎任务的编程。
在EJB规范中,它们由EJBContainer负责。
EJB包含接口和类。
客户端通过EJB的本地接口和远程接口访问EJB方法。
本地接口
提供的方法可用于生成、删除和查找EJB,远程接口则提供业务方法。
部署时,Container从这些接口生成类,这些类使客户端可以访问、生成、删除、查找EJB和调用EJB上业务方法。
EJB类为业务方法、生成方法和查找方法提供实施,如果Bean管理自己的存储,还得提供生命周期方法的实施。
EJB共有三种类型:
EntityBean,SessionBean和MessageDrivenBean(随着EJB2.0规范的出台而提出)。
1.SessionBean
SessionBean代表与客户端的短暂对话,可以执行数据库读写。
SessionBean可以请求JDBC调用本身,也可以使用EntityBean执行调用,这时SessionBean是EntityBean的客户端(参见如下所述的EntityBean)。
SessionBean的字段包含对话的状态,是短暂的。
如果服务器或客户端出现故障,SessionBean将消失。
这种模式一般用于PL/SQL等数据库编程语言。
SessionBean可以有状态,也可以无状态。
有状态SessionBean包含客户端方的对话状态。
对话状态是SessionBean实例的字段值加上可以从SessionBean字段阅读的所有对象。
有状态的SessionBean不表示持久数据库中的数据,但能够以客户端的名义访问和更新数据。
无状态SessionBean没有客户端的任何状态信息。
它们一般提供不保留任何状态的服务器方行为。
无状态SessionBean需要的系统资源较少。
提供通用服务或表示共享数据视图的业务对象适合作为无状态SessionBean。
2.EntityBean
EntityBean表示数据库中的数据以及作用于数据的方法。
在针对员工信息表的关系数据库中,表中的每一行就是一个Bean的实例。
EntityBean是事务处理型和持久的。
只要数据存在于数据库中,EntityBean就存在。
这种模式可容易地用于关系数据库,而且不限于对象
数据库。
用Container管理的持久性访问关系数据库的EJB不需要为数据库访问使用任何JDBC2.0
API,因为Container可以负责完成这项任务。
但是,如果使用Bean管理的持久性或想访问关系数据库以外的企业信息系统,就需要提供相应的代码才能完成。
如果EJB使用由Bean管理的持久性访问数据库,用户必须借助JDBC2.0API实施Bean
生命周期方法,这样才能加载和保存数据,并保持运行和持久数据库存储之间的一致性。
Web层使用HTTP或HTTPS在各层之间传输数据,EJB层则使用RMI-IIOP。
RMI-IIOP是一种完全可扩展的分布式计算协议,使访问EJB的任何客户端或web层程序能直接访问EJB层中的服务。
这些服务包括用于查阅和参考EJB的JNDI、用于发送和接收异步消息的Java
消息服务(JMS),以及用于关系数据库访问的JDBC。
3.MessageDrivenBean
EJB2.0规范中的MessageDrivenBean也是EJB,能处理从JMS消息队列接收到的异步消息。
JMS将消息路由到MessageDrivenBean,由MessageDrivenBean从池中选出某个实例处理消息。
MessageDrivenBean在WebLogicServerEJBContainer中管理。
由于它们不是由用户的应用直接调用的,因此不能借助EJB本地接口从应用访问。
但是,用户的应用可以将消息发送到Bean所监听的JMS队列中,以此来实例化MessageDrivenBean。
十一、RMI支持服务
在WebLogic中,RMI在三种传输服务之上实施:
IIOP、HTTP和T3。
如前所述,IIOP上的RMI可用作与CORBA的桥。
当需要与WebLogic通信而且之间有防火墙存在时,HTTP上的RMI可用作基于Java的客户端,它能处理通过防火墙过程中出现的所有问题。
T3也称为丰富套接字,是BEA内部协议,功能丰富,可扩展性好。
T3是多工双向和
异步协议,已经过高度优化,只使用一个套接字和一条线程。
借助这种方法,基于Java的
客户端可以根据服务器方需求使用多种RMI对象,但仍使用一个套接字和一条线程。
T3是Java对象序列化或RMI的超集合,Java对象序列化和RMI可以执行的一切活动都
能通过T3完成。
注意,T3协议是专有协议,目的是用于性能和可扩展性都非常关键的Java客户端。
如果不是这样,Java客户端可以使用JavaRMI。
与T3相同,RMI允许客户端程序操作WebLogicServer端的对象,就好象操作客户端的本地对象一样。
事实上,WebLogic开发T3的原因是它们需要一种可扩展的有效协议,以便借助Java建
立企业级分布式对象系统。
虽然T3是WebLogic专用的,但应用代码不需要对T3有任何了解,因此无需为此担心。
用户可以将WebLogic专用字串(如PROVIDER_URL_INITIAL_CONTEXT_FACTORY等)放在属性文件之外(或某个地方),使代码完全可以转移到这样的地方:
只需在属性文件中进行
修改就能使代码在另一台J2EE应用服务器上运行。
用户可以将PROVIDER_URL中定义的协议修改为HTTP或HTTPS,但只意识到是通过HTTP/HTTPS开通T3。
这样做会降低性能,因此只有确实需要时才能使用通道(如需要通过防火墙)。
十二、J2EE客户端
J2EE客户端可以基于web(如客户端将HTTP作为协议访问WLS服务),也可以基于Java。
基于Java的客户端使用JavaRMI或WebLogic专用T3协议访问服务。
这种情况下,Java客户端应该是Servlet或EJB。
总之,分布式企业应用可能同时包含两种客户端。
在JavaScript等技术的帮助下,Web浏览器可以支持强大、快速的用户界面。
其它功能可以由小应用程序(Applet)提供。
借助HTTP上的HTML或XML,Java小应用程序可以与浏览器一起使用,以便获得进一步增强。
Java小应用程序还可以与中层通信,以便进一步加强控制和提高灵活性。
Web浏览器是真正的通用Web客户端,对简单用户界面和Internet应用来讲,它是理想的客户端。
最重要的规律是,如果HTML足以捕获和显示应用所需的信息,则HTML为首选。
使用HTML的实际原因是,用户对客户端方没有控制力。
如果HTML不足以捕获和显示应用所需的信息,则应该由客户端执行必要的捕获和显示操作。
无论是小应用程序还是独立Java程序,都应该使用Java客户端,因为它们可以提供更丰富的图形用户界面。
在Internet中,小应用程序代表一系列逻辑问题,可能会降低用户对计算机的满意度。
因此,我们建议只限在网络带宽较高而且浏览器类型可以控制的公司内部网中使用小应用程序。
某些情况下,HTML和Java都不适合生成GUI。
由于Microsoft拥有台式机,因此实际方法可以允许与COM进行某种连接。
WebLogicServerCOM编译器的最大用途是在VisualBasic中编写ActiveX组件,与Excel电子数据表一起与基于J2EE的应用交互。
1多台客户端
多层系统的最大优点之一是可以使用上述所有类型的客户端并让它们访问相同的业务
逻辑。
如Figure41所示,当客户端是HTML时,ISP/servlet组合将成为能实现业务目标的真正客户端。
当客户端是Java程序或基于COM的程序时,它们也可以直接访问业务逻辑。
Data
Store
Servlet
COM
EntityBean
Session
Bean
Java
HTML
Figure41J2EE应用的客户端
2、JavaScript、DHTML和样式
HTML内容已得到浏览器和操作系统的广泛支持。
与HTML一起,服务器还可以提供JavaScript代码,以便根据要求丰富用户界面。
这种内容最适合响应展示产生在服务器方但需传送到浏览器显示的情况。
它应该作为标记语言,指导浏览器怎样展示结果。
HTML是对静态文档进行编码的好方法。
但是,借助HTML很难展示复杂文档。
样式页和动态HTML(DHTML)可以显示更复杂的文档。
但是,各种常用的浏览器不能处理样式页和DHTML一致性,因此需要设计各种形式的页面或在页面中包含浏览器专用标记。
HTML的优势是已经得到了许多平台上多种应用的广泛支持。
在最常用的浏览器上,不
依赖浏览器专用标记的HTML文档应该外观相似。
HTTP与HTML的结合可以保证能够在许多平台上查看文档。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2EE 体系结构