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
和他们的实例等内容。有兴趣的朋友联系我一起研究。
本文出自 “张隽永” 博客,谢绝转载!
|
0人
|
了这篇文章 |
附件下载:
EJB3整体结构分析图
EJB3整体结构分析图
SessionBean分析图
类别: EJB3.0介绍┆阅读(
0)┆评论(
0) ┆ 返回博主首页┆ 返回博客首页
上一篇 软件项目整个架构分析说明 下一篇 组件化商业模型