EJB 2.1中的新特性主要集中于有关SOAP和WSDL的Web服务,包括两种新推出的Web服务应用程序接口(JAX-RPC和JAXM)。它们可以用来与其他Web服务模块通信,并适当地在Web模块中运用无状态的bean和消息驱动bean。也就是说,基于新的标准,EJB将逐渐成为Web服务的开发平台。
在支持Web服务的同时,EJB 2.1也改进了EJB-QL以及消息驱动bean(MDB)的编程模型。该编程模型目前已经扩展至Java消息服务之上以支持任何一种消息系统。另外,新标准也推出了一种新的计时器服务,使得开发人员可以设计计时事件,并提供消息联接的接口,供开发人员在组件之间控制消息的流动之用。
这里我们并不讨论每个特性的太多细节,只是想做一简单的介绍,起到抛砖引玉的作用。如果读者有兴趣,可以参阅EJB 2.1的相关规格说明。下面我们就Web服务、MDB编程模型和EJBQL三个方面分别加以说明如下:
EJB 2.1新标准推出的最大原动力就是对于Web服务的支持。EJB 2.1允许编程人员利用无状态的会话bean和消息驱动bean来开发基于SOAP的Web服务,并使得基于SOAP 1.1的用户可以使用相关的服务。
应该说明的是,基于其他Web服务平台的SOAP客户通常无法激活无状态的会话 bean的方法,例如MS.NET,PERL,Apache Axis。而在EJB 2.1中的Web服务接口则提供了一个前所未有的跨平台兼容性。
EJB 2.1中Web服务接口是基于两个新推出的j2ee SOAP技术的,即JAX-RPC和JAXM。
1、JAX-RPC和EJB
JAX-RPC,即Java API for XML-RPC,是基于SOAP的Java RMI技术的。它与以前的 Java RMI技术和Java-RMI IIOP技术类似,不同之处是使用了SOAP作为底层协议。
实现JAX-RPC的系统必须支持HTTP之上的RPC编码机制,另外也应该支持其他的编码机制、消息格式和互联网协议。各种EJB,包括会话bean、实体bean和消息驱动bean都可以使用JAX-RPC技术来激活Web服务的操作。比如说,一个无状态的会话bean就可以利用JAX-RPC来调用.NET Web服务的方法(见下图4)。
图4 JAX-RPC 和 EJB
JAX-RPC同样也是一种新的组件接口的开发基础,这种接口称为终点(endpoint)接口,它允许一个无状态的会话bean作用为一个Web服务组件。终点接口实现了javax.rmi.Remote接口并遵循JAX-RPC的协议标准。其中,将一个无状态的会话bean作为Web组件来部署的过程并不是很复杂,开发人员只需要定义bean的类文件及远程接口,并将其部署至相关的应用程序中。一旦Web服务的组件部署成功后,其方法可以被任何一个遵循SOAP协议的组件调用,而无论组件是基于何种开发语言或开发平台的,如.NET,PERL,Apache Axis,C,C++及其他(见下图5)。
图5 通过SOAP和其他Web服务器通信