首页 > 其他 > 详细

无状态会话bean(1)---定义(未排版)

时间:2014-10-31 23:39:35      阅读:420      评论:0      收藏:0      [点我收藏+]

无状态会话bean用于完成在单个方法的生命周期内的操作。无状态bean可以实现许多业务操作,但是每个方法都不能假定任何其他的方法会在它之前调用。

这听起来像是无状态的bean的一个局限。但是这是迄今为止业务服务最常见的形式。不同于适合在对话中积累状态(如零售应用程序的购物车)的有状态会话bean,无状态回话bean旨在非常有效的执行独立操作。无状态会话bean可以在最小化对整体服务器资源影响的同时,扩展到大量的客户端。

会话bean定义分为如下两个部分:

零个或多个业务接口,定义了一个客户端在bean上可以调用的方法。当没有定义接口时,bean的实现类的公共方法集合形成了一个逻辑客户端接口。

实现这些接口的类,称之为bean类,采用@Stateless注解进行标记。

大多数会话bean有一个业务接口,但是对会话bean可以向其客户端公开的接口数量是没有限制。当服务器遇到@Stateless注解时,它会知道把该bean类当做一个会话bean。它将在EJB容器中配置这个bean,使得应用程序的其他组件可以使用它。@Stateless注解和本章中描述的其他注解均定义在Javax.ejbjavax.annotation包中 。

下面的这个EJB版本的Hello World例子中包含了一个业务接口。在此示例中包含了一个单一 的方法。没有注解或者富接口来指明这是一个业务接口。当会话bean实现它时,将会自动把它视为一个本地业务接口,也为这只有在同一个应用程序服务器上的客户端能够访问它。为了强调一个接口是本地业务接口,可以选择把@Local注解添加到该接口上。

(接口代码)

现在考虑接口的实现。这是一个实现了上面接口的常规Java类 。这个类唯一特别的事@Stateless注解,标记它是一个无状态会话bean。业务方法上线没有任何特殊的限制或要求,它恰好是一个EJB的常规类。

(实现代码)

关于无接口视图

EJB3.1中引入无接口视图(no-interface-view),是的定义一个本地回话bean以及客户端访问本地回话bean更加简单。使用无接口视图定义相同的HelloServiceBeanbean的开发人员只需创建实现类,无需 实现任何业务接口:

(代码)

会话bean的逻辑接口包含了它的公共方法,在本例中是sayHello()方法。客户端把HelloServiceBean类当做接口一样使用,不必考虑任何非公开的方法或实现的详细信息。隐式地,客户端将扩展bean类的代理交互,并覆盖业务方法以提供标准的容器服务。

无接口视图的优点之一是简单。它不需要实现一个冗余的业务接口,并进一步使得EJB看起来像是常规JavaBean类。然而,由于无接口视图仅适用于本地回话bean,本例中采用传统样式的独立接口,从而保证无状态和有状态会话bean一致。

对于无状态会话bean类的定义只需要注意两点。第一是它需要一个无参数的构造函数,但是当没有其他的构造函数时,编译器通常会自动生成此构造函数。第二是不应该使用静态字段,这主要是以为内bean的重新部署问题。

许多EJB容器创建一个无状态会话bean的实例池,然后选择任意的一个实例以服务每个客户端请求。因为这不能保证调用之间将使用相同的状态,所以不能依赖于这一点。

 

 

无状态会话bean(1)---定义(未排版)

原文:http://blog.csdn.net/beijiguangyong/article/details/40663619

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!