<接j2ee全面介绍(一)>
四. j2ee 的结构
这种基于组件,具有平台无关性的j2ee 结构使得j2ee 程序的编写十分简单,因为业务逻辑被封装成可复用的组件,并且j2ee 服务器以容器的形式为所有的组件类型提供后台服务. 因为你不用自己开发这种服务, 所以你可以集中精力解决手头的业务问题。
容器和服务
容器设置定制了j2ee服务器所提供得内在支持,包括安全,事务管理,jndi(java naming and directory interface)寻址,远程连接等服务,以下列出最重要的几种服务:
j2ee安全(security)模型可以让你配置 web 组件或enterprise bean ,这样只有被授权的用户才能访问系统资源. 每一客户属于一个特别的角色,而每个角色只允许激活特定的方法。你应在enterprise bean的布置描述中声明角色和可被激活的方法。由于这种声明性的方法,你不必编写加强安全性的规则。
j2ee 事务管理(transaction management)模型让你指定组成一个事务中所有方法间的关系,这样一个事务中的所有方法被当成一个单一的单元. 当客户端激活一个enterprise bean中的方法,容器介入一管理事务。因有容器管理事务,在enterprise bean中不必对事务的边界进行编码。要求控制分布式事务的代码会非常复杂。你只需在布置描述文件中声明enterprise bean的事务属性,而不用编写并调试复杂的代码。容器将读此文件并为你处理此enterprise bean的事务。
jndi 寻址(jndi lookup)服务向企业内的多重名字和目录服务提供了一个统一的接口,这样应用程序组件可以访问名字和目录服务.
j2ee远程连接(remote client connectivity)模型管理客户端和enterprise bean间的低层交互. 当一个enterprise bean创建后, 一个客户端可以调用它的方法就象它和客户端位于同一虚拟机上一样.
生存周期管理(life cycle management)模型管理enterprise bean的创建和移除,一个enterprise bean在其生存周期中将会历经几种状态。容器创建enterprise bean,并在可用实例池与活动状态中移动他,而最终将其从容器中移除。即使可以调用enterprise bean的create及remove方法,容器也将会在后台执行这些任务。
数据库连接池(database connection pooling)模型是一个有价值的资源。获取数据库连接是一项耗时的工作,而且连接数非常有限。容器通过管理连接池来缓和这些问题。enterprise bean可从池中迅速获取连接。在bean释放连接之可为其他bean使用。
容器类型
j2ee应用组件可以安装部署到以下几种容器中去:
ejb 容器管理所有j2ee 应用程序中企业级bean 的执行. enterprise bean 和它们的容器运行在j2ee 服务器上.
web 容器管理所有j2ee 应用程序中jsp页面和servlet组件的执行. web 组件和它们的容器运行在j2ee 服务器上.
应用程序客户端容器管理所有j2ee应用程序中应用程序客户端组件的执行. 应用程序客户端和它们的容器运行在j2ee 服务器上.
applet 容器是运行在客户端机器上的web浏览器和 java 插件的结合.。
五. j2ee的核心api与组件
j2ee平台由一整套服务(services)、应用程序接口(apis)和协议构成,它对开发基于web的多层应用提供了功能支持,下面对j2ee中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述):
1. jdbc(java database connectivity):
jdbc api为访问不同的数据库提供了一种统一的途径,象odbc一样,jdbc对开发者屏蔽了一些细节问题,另外,jdcb对数据库的访问也具有平台无关性。
2. jndi(java name and directory interface):
jndi api被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如dns和ldap,本地文件系统,或应用服务器中的对象。
3. ejb(enterprise javabean):
j2ee技术之所以赢得某体广泛重视的原因之一就是ejb。它们提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。ejb规范定义了ejb组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,ejb并不是实现j2ee的唯一途径。正是由于j2ee的开放性,使得有的厂商能够以一种和ejb平行的方式来达到同样的目的。
4. rmi(remote method invoke):
正如其名字所表示的那样,rmi协议调用远程对象上方法。它使用了序列化方式在客户端和服务器端传递数据。rmi是一种被ejb使用的更底层的协议。
5. java idl/corba:
在java idl的支持下,开发人员可以将java和corba集成在一起。他们可以创建java对象并使之可在corba orb中展开, 或者他们还可以创建java类并作为和其它orb一起展开的corba对象的客户。后一种方法提供了另外一种途径,通过它java可以被用于将你的新的应用和旧的系统相集成。
6. jsp(java server pages):
jsp页面由html代码和嵌入其中的java代码所组成。服务器在页面被客户端所请求以后对这些java代码进行处理,然后将生成的html页面返回给客户端的浏览器。
7. java servlet:
servlet是一种小型的java程序,它扩展了web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和cgi perl脚本很相似。servlet提供的功能大多与jsp类似,不过实现的方式不同。jsp通常是大多数html代码中嵌入少量的java代码,而servlets全部由java写成并且生成html。
8. xml(extensible markup language):
xml是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据。xml的发展和java是相互独立的,但是,它和java具有的相同目标正是平台独立性。通过将java和xml的组合,您可以得到一个完美的具有平台独立性的解决方案。
9. jms(java message service):
ms是用于和面向消息的中间件相互通信的应用程序接口(api)。它既支持点对点的域,有支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。jms还提供了另一种方式来对您的应用与旧的后台系统相集成。
10. jta(java transaction architecture):
jta定义了一种标准的api,应用系统由此可以访问各种事务监控。
11. jts(java transaction service):
jts是corba ots事务监控的基本的实现。jts规定了事务管理器的实现方式。该事务管理器是在高层支持java transaction api (jta)规范,并且在较底层实现omg ots specification的java映像。jts事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。
12. javamail:
javamail是用于存取邮件服务器的api,它提供了一套邮件服务器的抽象类。不仅支持smtp服务器,也支持imap服务器。
jta(javabeans activation framework):
javamail利用jaf来处理mime编码的邮件附件。mime的字节流可以被转换成java对象,或者转换自java对象。大多数应用都可以不需要直接使用jaf。
(完)
