`
jie2workjava
  • 浏览: 151199 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

EJB中Session Bean的见解

阅读更多
EJB中Session Bean的见解
责任编辑:admin   更新日期:2005-8-6

EJB中Session Bean的见解

一.Enterprise Beans

在EJB(Enterprise Java Beans)中定义了两种不同类别的Enterprise Bean :
*会话 Bean (Session Bean)
*实体Bean (Entity Bean)
1. 会话 Bean (Session Bean)
会话 Bean 是调用它的客户端代码要完成的工作。当客户端与服务器建立联系,那么一个会话 Bean 就建立起来了。根据会话 Bean 的状态不同有分为:
A. 状态会话 Bean (Stateful Session Bean)
B. 无状态会话 Bean (Stateless Session Bean)
1.1 状态会话 Bean (Stateful Session Bean)
当客户机和服务器建立连接之后,状态会话 Bean (Stateful Session Bean) 将一直在客户机和服务器之间保持着用户的某个状态。例如:用户使用银行的ATM时,经过验证之后,用户可以连续执行多次操作,在这个过程当中,用户的合法状态将一直被保留,直到她将信用卡取出,结束这次操作。这时,状态会话 Bean (Stateful Session Bean) 也就被销毁。
1.2无状态会话 Bean (Stateless Session Bean)
当客户机和服务器建立连接之后,无状态会话 Bean (Stateless Session Bean)处理单一的用户请求或商务过程。无状态会话 Bean (Stateless Session Bean)不需要从以前的请求中提取任何状态。例如,用户的用户密码确认。用户输入密码后,发送请求。组件返回真或假来确认用户,一旦过程完成,无状态会话 Bean (Stateless Session Bean) 也宣告结束。
2. 实体Bean (Entity Bean)
实体Bean (Entity Bean)只是数据模型,它不包括商务逻辑。实体Bean (Entity Bean)可以将关系/对象数据库的数据映射到内存中供其它组件使用。实体Bean (Entity Bean)是一直存在的,而且具有很高的容错性能。实体Bean (Entity Bean)能供允许多用户同时访问。

二. 会话 Bean (Session Bean)

Ejb的执行过程是被放在一个EJB容器中进行的,所以客户端不会直接调用我们写好的Enterprise Bean ,而是调用EJB容器生成的一个EJBObject (EJB对象)来实现。那么,我们在编写服务器端的Enterprise Bean 时,就要考虑这点。既然客户端不能直接访问,就由EJBObject来代劳,所以在编写服务器端时,就要编写服务器端的一个接口(Remote)用来与客户机联系,实力化EJBObject。要生成EJBObject 就要调有Home 接口,来建立这个实力。

以下是会话 Bean 的代码分析:
A.Enterprise Bean 类:sailorsy.class
1.setSessionContext(SessionContext ctx)方法
它是EJB容器和Enterprise Bean互相作用的关口。
import java.rmi.*;
import javax.ejb.*;
public class sailorsy implements SessionBean{
private SessionContext ctx=null;
public voic setSessionContext(SessionContext ctx){
this.ctx=ctx;
}//setSessionContext
}//class sailorsy
2.ejbCreate(…)方法
它可以初始化Enterprise Bean ,可以定义不同的ejbCreate(…)方法,每个方法所带的参数不同。但是,必许要存在至少一种。
import java.rmi.*;
import javax.ejb.*;
public class sailorsy implements SessionBean{
private SessionContext ctx=null;
public voic setSessionContext(SessionContext ctx){
this.ctx=ctx;
}//setSessionContext
public void ejbCreate() {
}//ejbCreate
}//class sailorsy
3.ejbPassivate()方法
如果初始化的Enterprise Bean 过多,EJB容器将其中的一些挂起(passivate),释放他们所占用的空间。
import java.rmi.*;
import javax.ejb.*;
public class sailorsy implements SessionBean{
private SessionContext ctx=null;

public voic setSessionContext(SessionContext ctx){
this.ctx=ctx;
}//setSessionContext

public void ejbCreate() {
}//ejbCreate
public void ejbPassivate() {
}//ejbPassivate

}//class sailorsy
4.ejbActivate()方法
和ejbPassivate正好相反,它将被挂起的Bean从新调回。
import java.rmi.*;
import javax.ejb.*;
public class sailorsy implements SessionBean{
private SessionContext ctx=null;

public voic setSessionContext(SessionContext ctx){
this.ctx=ctx;
}//setSessionContext

public void ejbCreate() {
}//ejbCreate
public void ejbPassivate() {
}//ejbPassivate

public void ejbActivate() {
}//ejbActivate

}//class sailorsy
5.ejbRemove()方法
它可以清除EJB容器中的Bean。
import java.rmi.*;
import javax.ejb.*;
public class sailorsy implements SessionBean{
private SessionContext ctx=null;

public voic setSessionContext(SessionContext ctx){
this.ctx=ctx;
}//setSessionContext

public void ejbCreate() {
}//ejbCreate

public void ejbPassivate() {
}//ejbPassivate

public void ejbActivate() {
}//ejbActivate

public void ejbRemove() {
}//ejbRemove

public String showname(){
return "Hello,my name is sailorsy";
}//自己的商务方法
}//class sailorsy
以上这些是EJB必需的回调方法,我们可以在里面加入自己的方法,加入自己的商务逻辑。
B.Home 接口: sailorsyHome
import java.rmi.*;
import javax.ejb.*;

public interface sailorsyHome extends EJBHome {
public sailorsyRemote create() throws RemoteException, CreateException;
}
C. Remote接口:sailorsyRemote
import java.rmi.*;
import javax.ejb.*;

public interface sailorsyRemote extends EJBObject {
public java.lang.String showname() throws RemoteException;
}

三.调用会话 Bean:sailorsyTestClient1

import javax.naming.*;
import javax.ejb.*;
import javax.rmi.PortableRemoteObject;
import java.rmi.*;

public class sailorsyTestClient1 {
private sailorsyHome sailorsyHomeObject = null;

//Construct the EJB test client
public sailorsyTestClient1() {
try {
//以下是客户端使用JNDI定位Home对象。
Context ctx = new InitialContext();

//look up jndi name
Object ref = ctx.lookup("sailorsy");

//cast to Home interface
sailorsyHomeObject = (sailorsyHome) PortableRemoteObject.narrow(ref, sailorsyHome.class);

}
catch(Exception e) {
e.printStackTrace();
}
}

//----------------------------------------------------------------------------
// Utility Methods
//----------------------------------------------------------------------------

public sailorsyHome getHome() {
return sailorsyHomeObject;
}
//Main method

public static void main(String[] args) throws Exception{
sailorsyTestClient1 client = new sailorsyTestClient1();
sailorsyRemote sr=client.getHome() .create() ;
String s=sr.showname() ;
System.out.print(s);
// Use the getHome() method of the client object to call Home interface
// methods that will return a Remote interface reference. Then
// use that Remote interface reference to access the EJB.
}
}
以上的EJB在win2000+jbuilder5/jbuilder6+BAS4.5经过测试。
分享到:
评论

相关推荐

    EJB2 SessionBean

    **EJB2 SessionBean**是Java企业版(Java EE)中的一个重要组件,它代表了业务逻辑层,主要用于处理应用程序的核心业务操作。SessionBean是可复用的Java对象,通过远程接口提供服务,允许客户端(如Web层或客户端...

    EJB3.0无状态SessionBean例子

    在EJB3.0中,无状态SessionBean是常用的一种组件类型,适用于处理短暂的、无持久性状态的业务逻辑。 1. **无状态SessionBean介绍** 无状态SessionBean代表了一个不保存客户端特定信息的业务逻辑组件。每次客户端...

    EJB详解 sessionbean entitybean MDB

    它可以是无状态的(Stateless Session Bean),为每个请求创建新的实例,或者有状态的(Stateful Session Bean),维护与特定客户端会话的状态。 - **Entity Bean**:用于表示数据库中的持久化对象,实现业务实体的...

    EJB3图文教程之开发Session Bean

    ### EJB3图文教程之开发Session Bean:...通过以上步骤,你已经掌握了如何在JBuilder2007中开发、部署和测试EJB3.0的Session Bean。这是一个从理论到实践的完整过程,希望能帮助你在实际项目中更高效地应用EJB技术。

    EJB_sessionbean.rar_session

    EJB中的Session Bean是其中一类重要的组件,它专注于表示业务逻辑,为客户端提供服务。 **一、Session Bean概述** Session Beans 是 EJB 容器管理的对象,它们代表了客户端与服务器之间的会话。这些会话可以是单例...

    ejb sessionbean demo

    在"ejb sessionbean demo"中,我们主要探讨的是如何使用EJB的Session Bean进行开发和演示。Session Bean通常用于实现业务逻辑,它们可以是无状态的,意味着每个请求都会创建一个新的Bean实例,不保留任何先前会话的...

    EJB3.0开发Session Bean.rar

    虽然EJB 3.0规范主要讨论Session Bean,但还包含了对实体Bean(Entity Bean)的支持,这些Bean与数据库中的记录对应。`@Entity`注解用于声明一个持久化的Java类,而`@Table`, `@Id`, `@GeneratedValue`等注解则用于...

    ejb实例包括session bean和实体bean

    Session Bean是EJB中的临时业务对象,代表客户端的一次会话或操作。它们通常用于封装业务逻辑,执行计算任务,或者协调与数据库和其他系统的交互。Session Beans有两种主要类型: 1. **Stateful Session Bean**:...

    ejb入门录像 sessionBean

    【ejb入门录像 sessionBean】是针对企业级Java应用(Enterprise ...通过观看"ejb入门录像.avi",初学者将能够了解并掌握EJB中的Session Bean的基本概念和操作,为进一步学习和开发企业级Java应用打下坚实的基础。

    EJB的开发及应用,Session Bean的开发

    本文将深入探讨EJB的概念、其在Java应用程序中的角色,以及如何开发和应用Session Bean。** **EJB简介** 企业级JavaBeans(EJB)是Java EE(Enterprise Edition)的一部分,它提供了一种规范来创建服务器端的可重用...

    EJB3.0开发Session Bean

    通过上述步骤,我们不仅学习了如何在JBuilder2007中配置和使用JBoss4.0,还掌握了EJB3.0 SessionBean的开发流程,从项目创建、SessionBean设计、方法实现到最终的部署和测试。这为开发复杂的企业级应用提供了一个...

    基于java的开发源码-EJB中有、无状态SessionBean的两个例子.zip

    基于java的开发源码-EJB中有、无状态SessionBean的两个例子.zip 基于java的开发源码-EJB中有、无状态SessionBean的两个例子.zip 基于java的开发源码-EJB中有、无状态SessionBean的两个例子.zip 基于java的开发源码-...

    EJB容器对bean的管理

    对于无状态session bean(Stateless session bean),EJB容器会在启动时预先创建一定数量的bean实例放入实例池。当客户端请求服务时,容器会从池中取出一个实例,处理完请求后,再将实例放回池中。这样,池中的每个...

    Java EJB中有、无状态SessionBean的两个例子.rar

    在Java EE中,SessionBean是企业 Bean(EJB)的一种类型,它提供了服务器端的方法来处理客户端的请求。SessionBean分为两种主要类型:有状态(Stateful Session Beans,SSB)和无状态(Stateless Session Beans,SSB...

    学习SessionBean

    SessionBean是Java EE(Enterprise Edition)中企业级JavaBeans(EJB)的一部分,主要用于实现服务器端的业务逻辑。它是一个可复用的组件,可以处理客户端的会话状态,提供了在分布式环境中持久化用户会话的能力。本...

    基于Java的EJB中有、无状态SessionBean的两个例子.zip

    本资料包"基于Java的EJB中有、无状态SessionBean的两个例子.zip"包含的是关于有状态和无状态SessionBean的实例代码,帮助开发者理解和掌握这两种类型SessionBean的用法。 1. **无状态SessionBean(Stateless ...

    Session Bean的使用

    JavaBean和Session Bean是Java企业级应用开发中的重要概念,特别是在使用Enterprise JavaBeans(EJB)技术时。本文将深入探讨这两个概念,以及如何在实际项目中使用它们。 首先,让我们了解什么是JavaBean。...

Global site tag (gtag.js) - Google Analytics