EJB3.0 介绍系列—— session bean
在前面的文章——《 J2EE 整个结构分析》中,我已经和大家简单的说了一下一个项目开发时的整体结构,不知道朋友们是怎么看待这个问题的,有兴趣的朋友可以和我交流。接下来我要说的是在页面逻辑层面上的 EJB3.0 ,现在的 EJB3.0 和过去 EJB2.0 比有了一些不同,使用起来更加简单方面了,上手也没有 EJB2.0 那么麻烦。使用过 EJB2.0 的朋友都知道,在 EJB2.0 中,相关配置文件就是一个很麻烦的事情,各种各样的 xml 文件,配置起来复杂也容器出错,这样是 EJB2.0 的使用者不多的原因之一,不是不想用,而是不好学。现在的 EJB3.0 技术已经相当成功的客服了这个问题,我们在部署的时候已经无需管理那些要我们烦心的 xml 配置文件,这在很大程度上也让开开发人员减轻了负担,同时降低了学习的难度。我们后面都是在 EJB3.0 的基础上进行介绍说明的。
在前文中,我们说到了 EJB 中三种的由来,他们的使用环境和使用目的(要是没看前面文章的朋友可以去看看)。看标题就知道了,这次我主要说的是其中的 session bean Session bean 是一种同步的服务机制,我举一个简单的例子来说明什么同步以及他和异步的区别。就拿我在 51CTO 发表的这篇文章来说,这篇文章存储在 51CTO 的数据库里面,您看到我的首页里有这个文章链接,那么您点击这个链接,您可能会等几秒中,等页面加载完毕后看到文章,那么这几秒钟是个延时,这几秒钟的操作是什么呢?网站的这个页面会告诉后台服务端,我要找“ EJB3.0 介绍系列—— session bean ”这个文章,然后在数据库检索,再将结果显示给您。这样,整个过程是一个及时的,您会坐在电脑前等待文章的加载,您马上就看到这个文章。那么这个后台服务就是同步服务,因为当我们调用这个服务的时候,这个服务及时给我们反映了这个查询结构,是检索到?还是没检索到?还是别的结果等等,总之,您会获得您点击这个操作的结果。异步服务我会在后面介绍 driver manage bean 的时候详细解释。
至于用 session bean 还是 driver manage bean 取决具体项目的服务设计。 Session bean 包含两种类型: stateless session bean stateful session bean 。这两种类型的 session bean 有着各自的使用环境,我们举一个简单的示例来说明一下。
我在百度里面想查询有关十一国庆的消息,那么我查询就可以了,关键字是“十一国庆”,在这个场景中,服务器中发布的这个服务是处理这个操作的,他不知道谁要查,也不知道别的其他事情,他就知道查询。那么这个就是一个 stateless session bean ,因为这个服务不记录任何信息,只进行查询服务。
stateful session bean 用在什么时候呢?比如说我们去 ATM 取钱,不可能说我们拿个卡,要多少取多少吧。要是也用 stateless session bean 的话,取钱服务不记录任何状态,也不知道谁的开,就知道出钱出钱,那么银行不就哭死了吗?所以说这个时候需要 stateful session bean ,他会在提供服务的时候进行一下记录,比如说我取钱时用的卡的一下基本信息等等。那么这些基本信息不是我每次需要提交的,而是 stateful session bean 记录的。
上面介绍了那么多,大家应该对 session bean 在为何使用上开始有一定的了解了。那么下面我就会针对一个 session bean 还给大家一个具体的实例,我们拿 stateless session bean 来做个实例。
首先我们看 session bean 所处位置图:
我看到,我们要做的这个 session bean 的实例位置位于是在 entity bean 层和 service-side 层之间。
再看下面的 session bean 组件里面的具体结构图:
我们看到我们的 session bean 结构是多么的简单,一个接口和一个实现类即可。后面 Entity Bean 使用 Hibernate 来实现的,不是这次的重点,现在我们只是知道这个实体类就可以了。
下面我来看下 stateless session bean 的实例代码:
HelloWorld 对象代码:
package com.SessionBean;
public interface HelloWorld {
       public HelloEntityBean SayHello(String name);
}
HelloWorldBean 对象代码:
package com. SessionBean;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import org.jboss.annotation.ejb.RemoteBinding;
@Stateless
@Remote ({HelloWorld.class})
@RemoteBinding (jndiBinding="HelloWorldBean/remote")
public class HelloWorldBean implements HelloWorld {
        public HelloEntityBean SayHello(String name){ 
// HelloEntityBean HelloWorld Entity Bean 他其中包括 id name description
              HelloEntityBean hebean = new HelloEntityBean();
              HelloEntityBean heb = hebean.Select(name);
              return “hello ”+ heb.getName() +” welcome to Stateless Session Bean!”;
        }
}
到此为止,一个和用户对话的 Stateless Session Bean 就算完成了,代码很简单。喜欢的朋友可以试试,不过要修改一下代码让实现的方法返回一个字符串就可以了。
后面我会接着说 EJB3.0 中带有 Hibernate Entity Bean 、解释什么是异步以及介绍两种 driver manage bean 和他们的实例等内容。有兴趣的朋友联系我一起研究。
附件: http://down.51cto.com/data/2354321
java session 休闲 EJB3.0介绍

0

收藏

上一篇:软件项目整个架构分析说明 下一篇:组件化商业模型
EJB3.0介绍系列——session bean_第2张图片
realzjy

78篇文章,57W+人气,1粉丝

关注