下面是EJB2.1的新特点的概述:
现在,让我们进一步看看这些特点。
EJB定时服务是由容器提供的。Bean提供者登记被调用的enteprise bean,到了指定的时间或经过了指定长的时间片断后,登记的enteprise bean会被自动回调(callback)。
定时服务为回调排定时间表。当指定的定时器计时完毕,容器将调用bean的ejbTimeout方法。下面是两个可以用EJB定时器服务的情况:
Enterprise bean通过它自己的EJBContext接口申请定时器服务。定时器服务为定时器的建立和取消及分配提供相应的方法。Bean类必须通过javax.ejb.TimedObject接口来使用定时器服务。该接口只有一个名为ejb.Timeout的回调方法。
Bean可以在它的定时器计时结束之前取消它。但是,如果一个定时器被取消,ejb.Timeout方法不会被取消。
无态bean可能会有网络服务客户,从本质上来说,无态bean可以作为网络服务端。网络服务客户端可以通过简单对象访问协议(Simple Object Access Protocal,即SOAP)来调用无态bean。
Bean的网络服务终端界面在网络服务描述语言(Web Service Description Language ,即WSDL)中介绍。当bean的提供者希望bean完成网络服务终端的功能,他可以选择使用网络服务终端接口来调用无态bean。网络客户可以用SOAP来发送或接受消息。
从客户端的角度来看,无态bean完全是隐藏在网络服务终端后的;客户通过终端来访问网络服务功能。就Java客户端来说,可以通过JAX-RPC客户(client-view)API来访问该终端,其效果如同访问JAX-RPC终端一样。
如果无态bean作为网络服务,它可以被各种客户端访问而与客户端平台或语言无关。
EJB2.0为实体(entity)bean引入了具有container-managed persistence(CMP)特性的抽象编程模型。在样,实体bean中无须包含任何代码。通过定义EJB-QL和其它标志,所有的内容都写在ejb-jar.xml文件中。容器将查询编译成底层数据库所用的目标语言(如SQL(结构化查询语言))。因此,实体具有高效性和可移植性。EJB-QL句法如下:
select_clause from_clause [where_clause] [orderby_clause]
EJB2.0相对EJB-QL多提供了一些函数,包括:
消息驱动bean是异步消息的接受者(consumer)。它们是匿名的,对客户来说是不可见的,因此,远端客户不能直接使用它们。
EJB2.0引入的消息驱动bean,如Queue和Topic,接受源于JMS的消息。EJB2.1扩展该功能,使得bean也可以从其它消息源产生的消息,如XML(JAXM)。一个消息驱动bean只能接受一种类型的消息。
举例来说,某个实现javax.jms.MessageListener的消息驱动bean只接受JMS消息;而实现javax.xml.messaging.OnewayListener或javax.xml.messaging.ReqRespListener的消息驱动bean只接受JAXM消息。
本文简单介绍了EJB2.1规范的几个激动人心新特点。进一步的学习请参考完整的EJB2.1文档。
欢迎评论或投稿