EJB具备即插即用的特征。用户只需知道关于中间件的知识就可以为多层次的大型软件构造组件,而不必像老的CORBA模式实现分布计算那样去写一些中间的API。用户利用EJB不需要写一行中间件的代码,其设计的组件就可透明地获得中间件的服务,来处理事务、维护、安全、状态管理、组件生命周期、线程等任务。
EJB标准跨平台和多开发商的本质是EJB另一个特别重要的特点。它为分布式组件结构提供了一个能集成不同来源软件的公共标准;同时,组件取代的便捷性也意味着增加了EJB市场的竞争趋势。EJB通过标准组件API的定义来提高应用水平,用户总是可以期待出现新的基于EJB的产品来提高系统的性能和可靠性。
(2)RMI和RMI-IIOP
EJB标准依赖于另外几个J2EE家族的API产品,其中最突出的是Java远程方法调用RMI。RMI提供了在另外的机器上远程调用方法的机制,它本身与Java语言紧密地集成在一起。如果用户熟悉Java,那么掌握RMI就比较容易。EJB在组件与客户之间建立通信API主要依赖于RMI。RMI的连接是无缝的,用户在进行分布式应用编程时甚至不知道已经使用了RMI。用户在使用RMI进行网络通信时几乎可以不去管与网络有关的种种问题,例如编组参数、处理机的地址等。RMI还有其他一些优点,例如动态类下载、远程对象自动激活、分布垃圾的收集和清除等。
RMI-IIOP是SUN和IBM等公司联合开发的RMI版本,使用了对象管理组(OMG)的Internet ORB交互协议(IIOP)作为通信协议。IIOP强调通信服务质量,因此具备强大的健壮性。如果J2EE用户想与CORBA系统集成,IIOP也是必要的。
(3)Java命名和字典接口
Java命名和字典接口(JNDI——Java Naming and Directory Interface)是支持命名和字典服务的一种标准。企业Beans依赖JNDI在网络中寻找分布的组件。JNDI是客户码与EJB组件连接所必要的关键技术。JNDI和字典服务联系在一起。字典服务存储数据源(例如组件)的驻留信息和用户名、口令等信息。在EJB系统中,客户码要求访问一个组件时,字典服务用来确定和取消为该客户服务的组件。
(4)Java数据库连接工具
Java数据库连接包JDBC2.0版是一个Java访问数据的扩展标准,它使得编程人员可以用统一的关系数据库API进行编码。Java编程人员可以利用JDBC表示数据库连接、引用SOL语句、处理数据库结果等。客户程序面对统一的JDBCAPI,JDBC驱动器作为访问特定数据库的适配器来完成其功能。实际上,JDBC与开放式数据库连接(ODBC)标准类似,通过JDBC-ODBC信桥,两者完全可以互操作。JDBC2.0内置了对数据库连接的支持,所以进一步加强了数据库与应用码的独立性。还应该看到,JDBC只是一个数据库连接的工具,EJB本身的应用与JDBC没有直接的关系。
(5)Java事务API和Java事务服务
事务(transaction)是一个工作单位,包含关于执行任务的一组保证,例如,事务给用户的一个保证是在事务的范围内任何码要么都执行,要么都不执行。事务是EJB带给工作台最有用的结构之一,需要靠它们来维持系统状态的一致性。事务允许多个彼此不发生关系的用户修改同一个数据。为了实现对于事务的操作,SUN公司开发了两个API:Java事务API(JTA)和Java事务服务(JTS)。这两个产品体现了Java如何实现事务的过程。
JTA是一个高级事务接口,用户程序可以用它来控制事务。用户应该理解JTA的工作原理,才能用Java语言来实现事务处理。JTS是一组低级事务接口,EJB用户的客户方编码不直接与JTS交互。JTS使多个供应商提供的组件相互配合,在一个分布、异构的环境中实现事务处理成为可能。CORBA规范中的对象事务服务(OTS)是JTS的基础。企业Beans对JTA的依赖性极强,但不怎么依赖于JTS。编写应用程序的人应该掌握JTA才能实现高级事务控制。
(6)Java消息服务
消息服务使分布对象以可靠的异步方式相互通信。在进行异步而不是同步地传递消息时,系统的利用率显着提高。事务处理可以在空闲的时候响应消息,而在消息开始发送时甚至可以在处理另一个事务。Java消息服务(JMS)是SUN公司发布的一个与消息服务有关的API。
(7)Java Servlet和Java服务页面
Servlet是一个网络化的组件,用户可以用它来扩展Web服务器的功能。Servlet的工作方式是请求/响应。当收到客户(例如一个Web浏览器)发出的请求,Servlet就向它返回一个响应。这对于实现Web的任务是很理想的。但是,Servlet并不与任何Web服务器绑在一起,它们还可以作为面向请求/响应的一般组件来使用。
Servlet与EJB组件的区别在于:EJB所提供的服务器方的大量特色对Servlet不是很合用。Servlet更适合于处理简单的、不需要应用服务器做复杂管理的请求/响应任务。
Java服务器页面(JSP)与Servlet非常类似。实际上,JSP脚本都被编译成为Servlet才能发挥作用。JSP脚本与Servlet最大的差别在于JSP脚本不是纯粹的Java编码,而外表的某些方面看起来十分类似。如果用户希望其应用看起来好像在物理上与另外的应用相分离,并且更容易维护,那么他们可以使用JSP。JSP很容易用非Java语言描述,也不需要使用Java编译器。
(8)JavaIDL
前面已经指出,CORBA是OMG付出大量心血而取得的成果。OMG代表几百个投资于跨平台结构研究的公司。CORBA具有语言独立性,不管用户使用什么语言编程,只要CORBA能够支持,用户就能够利用CORBA规范。Java IDL是CORBA的一个实现,它使用Java,容许异构对象连接和互操作。CORBA有很多实现,JavaIDL是其中之一。JavaIDL并没有实现CORBA规定的所有内容,只实现了其中一部分。
(9)JavaMail
SUN公司的JavaMailAPI使用户能够使用E-mail。JavaMail对象模型使用起来非常简单,如果用户使用Java语言编程,顺便就能得到JavaMail。与其他大部分J2EEAPI一样,JavaMail也定义一组接口与用户编写的应用码连接,这些接口屏蔽了特定的协议和所用的mail服务实现。这样,用户的Internet邮件码就有效地成为灵活的跨平台、跨协议代码。JavaMail带有一组约定类以简化应用的开发,还带有几个服务以实现最普通的邮件协议。Java Mail依赖于Java Beans活化框架(JAF)对数据打包和处理与数据的交互。因此,供应商在提供J2EE产品时还必须提供JAF。
(10)连接器
J2EE通过连接器(connectors)与现存的信息系统集成。连接器是特定供应商提供的信桥,以连接现存系统和J2EE。用户利用连接器可以写出跨平台、跨供应商的J2EE代码,从而保护已有的资源和投资,例如已有的ERP系统、面向消息的中间件系统、遗产数据库等。连接器能够自动管理中间件在现存系统中巡游的种种细节,例如处理事务、安全检查等。SUN公司的连接器规范还提供了供应商都可以写入的标准接口,使用户能把任何连接器插进J2EE产品,这意味着用户过去编写的访问码能灵活地通过应用服务器。值得注意的是,连接器与其他J2EEAPI不同,因为连接器是随供应商而特定的。
(11)XML
可扩展标记语言(XML——eXtensible Markup Language)是针对电子文档中结构化内容的一种统一标准。XML的可扩展性表现在需要时可以用它在业务文档中把业务表达成新的结构。与其他的标记语言例如HTML不同的是,XML标准没有文本控制的问题,没有预定义的片段,用户只要为自己的业务需要定义自己的片段,这就使XML成为业务数据传递电子化的理想格式。XML在其他方面也得到广泛的应用。J2EE对XML的使用表现在:JSP用XML作为Web脚本的数据文档格式,EJB1.1用XML描述组件。
7.6小结
本章介绍了企业信息系统的运行环境。网络和数据库是最基本的概念,本章简单地介绍了企业信息化工程中经常出现的概念。90年代出现的中间件是未来主导企业信息化工程发展的新概念,中间件必然会成为企业信息集成的主流技术。
本章扼要地介绍了Microsoft的COM/DCOM以及OMG提出的CORBA和SUN公司基于Java的组件技术,希望引起读者的关注。相信在不久的将来,在COM/DCOM、CORBA或J2EE平台等技术的支持下开发或者升级的ERP、CAD、CAPP、PDM等商品会成为企业信息化工程的主流软件,到那时,企业信息集成的水平会比现在高出许多。