J2EE平台由一整套服务(Services)、应用程序接口(API)和协议构成,它对开发基于Web的多层、分布式应用提供了功能支持。
1.组件/容器技术
如图6-2所示的这种基于组件、具有平台无关性的J2EE结构使得J2EE程序的编写十分简单,因为业务逻辑被封装成可复用的组件,并且J2EE服务器以容器的形式为所有的组件类型提供后台服务。因为不用自己开发这种服务,所以可以集中精力解决手头的业务问题。
图6-2 组件/容器结构
J2EE应用组件可以安装部署到以下几种容器中:
(1)EJB容器管理所有J2EE应用程序中EJB的执行。EJB和它们的容器运行在J2EE服务器上,Web容器管理所有J2EE应用程序中JSP页面和Servlet组件的执行。Web组件和它们的容器运行在J2EE服务器上。
(2)应用程序客户端容器管理所有J2EE应用程序中客户端组件的执行。应用程序客户端和它们的容器运行在客户端机器上。
(3)Applet容器是运行在客户端机器上的Web浏览器和Java插件的结合。容器设置定制了J2EE服务器所提供的内在支持,包括安全、事务管理、JNDI(Java Naming and Directory Interface)寻址、远程连接等服务,以下列出最重要的几种服务。
1)J2EE安全(Security)模型可以让你配置Web组件或EJB,这样只有被授权的用户才能访问系统资源。每一客户属于一个特别的角色,而每个角色只允许激活特定的方法。应在EJB的布置描述中声明角色和可被激活的方法。采用这种声明性的方法后,就不必编写加强安全性的规则了。
2)J2EE事务管理(Transaction Management)模型可以指定组成一个事务的所有方法间的关系,这样一个事务中的所有方法被当成一个单一的单元。当客户端激活一个EJB中的方法,容器介入管理事务。因有容器管理事务,在EJB中不必对事务的边界进行编码。要求控制分布式事务的代码会非常复杂。只需在布置描述文件中声明EJB的事务属性,而不用编写并调试复杂的代码。容器将读此文件并为程序员处理此EJB的事务。
3)JNDI寻址(JNDI Lookup)服务向企业内的多重名字和目录服务提供了一个统一的接口,这样应用程序组件可以访问名字和目录服务。
4)J2EE远程连接(Remote Client Connectivity)模型管理客户端和EJB间的低层交互。当一个EJB创建后,一个客户端可以调用它的方法就像它和客户端位于同一虚拟机上一样。
5)生存周期管理(Life Cycle Management)模型管理EJB的创建和移除。一个EJB在其生存周期中将会历经几种状态。容器创建EJB,并在可用实例池与活动状态中移动它,而最终将其从容器中移除。即使可以调用EJB的create及remove方法,容器也将会在后台执行这些任务。
6)数据库连接池(Database Connection Pooling)模型是一个有价值的资源。获取数据库连接是一项耗时的工作,而且连接数非常有限。容器通过管理连接池来缓和这些问题。EJB可从池中迅速获取连接。在EJB释放连接之后,可为其他EJB使用。
2.Servlet和JSP
(1)JSP(Java Server Pages)。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后,对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
(2)Java Servlet。Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。
Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而Servlet全部由Java写成并且生成HTML。
3.EJB技术
EJB(Enterprise JavaBean)。J2EE技术之所以赢得广泛重视的原因之一就是EJB。它定义了一个面向对象的服务器端分布组件标准,用来封装业务逻辑。EJB是一种基于组件思想的开发技术,具有良好的可重用性。(www.xing528.com)
EJB组件运行在应用服务器提供的EJB容器内,服务器可包含多个容器。容器负责装载组件、销毁过期的EJB组件、管理组件生存期和状态,以及管理组件所用的资源。容器内的EJB组件不直接与外界通信,容器负责管理调用组件的程序和组件间的通信,提供事务、安全性、持久性、远程访问和资源定位等底层服务。调用EJB的程序可以是JavaBean、一般Java程序、Servlet,Applet或JSP。
一个完整的基于EJB的分布式计算结构由6个角色组成,这6个角色可以由不同的开发商提供,每个角色所做的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。这6个角色分别是EJB组件开发者(Enterprise BeanProvider)、应用组合者(Application Assembler)、部署者(Deployer)、EJB服务器提供者(EJB ServerProvider)、EJB容器提供者(EJB Container Provider)和系统管理员(System Administrator)。
EJB分为会话Bean(Session Bean)、实体Bean(Entity Bean),从EJB 2.0标准开始还引入了一种新的消息驱动的Bean(Message-Driven Bean)。
会话Bean管理会话过程,处理业务逻辑,为会话用户提供服务。它的生存周期就是调用它的客户代码和它进行会话的过程。会话断开后,容器就将会话Bean的实例回收。
实质上,会话Bean代码的一次执行就完成了一次业务逻辑处理过程。会话Bean分为两类:有状态会话Bean和无状态会话Bean。有状态会话Bean保留调用它的客户程序的某些状态,并且在运行过程中持续跟踪客户程序状态的变化。无状态会话Bean在运行过程中不保留它的调用者的任何信息,是无状态、匿名的会话Bean。
实体Bean代表业务逻辑处理过程对底层数据库中持久性数据的操作。实体Bean代表底层相对稳定持久的数据,其生存周期要长于会话Bean。不同于会话Bean,实体Bean可以让多用户并发访问,即支持对数据库的并发访问,只要通过事务处理机制,就能保证操作的互斥性和完整性。实体Bean分为BMP Bean(Bean Managed Persistent Bean,自我管理的Bean)和CMP Bean(Container Managed Persistent Bean,容器管理的Bean)两类。BMP Bean是由组件开发人员自行编写代码实现数据持久性。CMP Bean由容器负责实现数据持久性,开发者只需向容器指明Bean属性到相应数据库表的映射。
消息驱动的Bean是EJB 2.0规范新增加的标准。这是一种新的基于JMS(Java Message Service Java消息服务)的可对消息事件进行处理的EJB。与会话Bean和实体Bean和调用者相同步的工作方式不同,消息Bean与客户程序异步执行,它在消息队列中的某个消息到来时执行。调用消息Bean的客户程序只需创建Bean的实例并把消息传给它,来使消息Bean执行相关操作。
4.数据库访问
DBC(Java Database Connectivity):JDBC API为访问不同的数据库提供了一种统一的途径,像ODBC一样,JDBC对开发者屏蔽了一些细节问题。另外,JDCB对数据库的访问也具有平台无关性。
5.分布式通信技术及分布式应用技术
(1)JNDI(Java Name and Directory Interfac)。NDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源,如DNS和LDAP.本地文件系统或应用服务器中的对象。
(2)RMI(Remote Method Invoke)。RMI协议调用远程对象上的方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。
(3)MI-IIOP。在Internet Inter-ORB Protocol(IIOP)之上提供了通常的JavaRemote Method Invocation(Java远程方法调用RMI)API的一种实现。它在RMI和CORBA应用程序之间架起了桥梁。这是在J2EE容器之间使用的一种标准通信协议。
(4)Java IDL/CORBA。在Java IDL的支持下,开发人员可以将Java和CORBA集成在一起。他们可以创建Java对象并使之可在CORBA ORB中展开,或者他们还可以创建Java类并作为和其他ORB一起展开的CORBA对象的客户。后一种方法提供了另外一种途径,通过它Java可以被用于将新的应用和旧的系统相集成。
(5)JMS(Java Message Service)。JMS是用于和面向消息的中间件相互通信的应用程序接口(API)。它既支持点对点的域,又支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另一种方式来对应用与旧的后台系统相集成。
(6)JTA(Java Transaction Architecture)。JTA定义了一种标准的API,应用系统由此可以访问各种事务监控。
(7)JTS(Java Transaction Service)。JTS是CORBA OTS事务监控的基本实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API(JTA)规范,并且在较底层实现OMG OTS specification的Java映像。JTS事务管理器为应用服务器、资源管理器、独立的应用及通信资源管理器提供了事务服务。
(8)JAXP(Java API for XML Paring)。这个API为XML解析器和API的转换提供了抽象。JAXP可以帮助把特定的XML解析器、XML Document Object Model(文档对象模式,DOM)实现,或者把XSLT转换成API,从而与J2EE应用程序代码隔离。
(9)JCA(Java Connector Architecture)。这个API提供了一种把J2EE应用程序组件集成到老式信息系统中的途径。
(10)JARS(Java Authentication and Authorization Service)。这个API为J2EE应用程序提供了验证和授权机制。
(11)XML(Extensible Markup Language)。XML是一种可以用来定义其他标记语言的语言。它被用来在不同的商务过程中共享数据。XML的发展和Java是相互独立的,但是它和Java具有的相同目标正是平台独立性。通过将Java和XML的组合,可以得到一个完美的、具有平台独立性的解决方案。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。