`
eighthspace
  • 浏览: 26098 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SessionBean总结

 
阅读更多

今天刚刚开始学习EJB3.0,学习了几个比较重要的概念,闲来没事,自己总结一下,希望各位高手多多指点下我这个菜鸟。


第一个接触到的概念就是EJB中的SessionBean,下面就来总结一下SessionBean中有状态SessionBean与无状态的


SessionBean的区别以及各自的特点。


有状态的SessionBean:

 

指的是在服务器端对该种类型的Bean的状态进行了记录,因此在一个会话中调用了有状态的SessionBean时,由于在服务器

 

端有状态信息进行记录,因此对调用的SessionBean对象是确定的。以下面的实例进行说明:

 

//调用有状态SessionBean的客户端
public class StatefulEbjClient {
	public static void main(String[] args) {
		try {
			InitialContext context = new InitialContext();
			//启动一个Session会话,创建一个StatefulEjb类型的实例
			StatefulEjb fe = (StatefulEjb)context.lookup("StatefulEjbBean/remote");
			for(int i = 0 ; i < 5 ; i++){
                                /*add()和getResult()是在StatefulEjb接口中随便定义的两个方法*/
				fe.add(1);//每次调用该方法就对变量+1
				System.out.println(fe.getResult());//将变量的值输出
			}
                        System.out.println("*******************************");
			//第二个session
			StatefulEjb fe2 = (StatefulEjb)context.lookup("StatefulEjbBean/remote");
			for(int i = 0 ; i < 5 ; i++){
				fe2.add(1);
				System.out.println(fe2.getResult());
			}
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

有状态的SessionBean的特点是每次调用该main方法时,都会重新创建一个fe对象,而且,调用add和getResult这两个

 

方法的fe都是同一个对象,不论执行多少次或者在多少个Session会话范围内执行,所得的结果都是一样的。

 

所以,上面程序的运行结果不论执行多少次都是:

 

1

2

3

4

5

*********************************

1

2

3

4

5

 

无状态的SessionBean:

 

与有状态的SessionBean刚好相反,服务器端不会记录该Bean的状态信息,因此每次调用无状态的SessionBean的实例

 

都是无法确定的。以下面的实例说明:

 

public class StatelessEbjClient {
	public static void main(String[] args) {
		try {
			InitialContext context = new InitialContext();
			//第一个session
			StatelessEjb slsb = (StatelessEjb)context.lookup("StatelessEjbBean/remote");
			for(int i = 0 ; i < 5 ; i++){
				slsb.add(1);
				System.out.println(slsb.getResult());
			}
			System.out.println("***********************");
			//第二个session
			StatelessEjb slsb2 = (StatelessEjb)context.lookup("StatelessEjbBean/remote");
			for(int i = 0 ; i < 5 ; i++){
				slsb2.add(1);
				System.out.println(slsb2.getResult());
			}
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

这段程序的逻辑与上一段完全相同,唯一的区别就是在两个Session会话中分别生成了两个StatelessEjb的实例,

 

得到的结果如下所示:

 

第一次运行的结果:

 

1

2

3

4

5

*********************************

 

6

7

8

9

10

 

从第一次运行的结果可以看出,无状态的SessionBean类似一种单例模式。

 

第二次运行的结果:

 

11

12

13

14

15

***********************

16

17

0

0

0

 

第二次的运行结果就充分说明:无状态的SessionBean在被调用时,并不能确定调用的是哪个实例。

 

说明:这个结果只是某次运行的结果,无状态的SessionBean在每次运行时的结果都是不确定的,而有状态的

 

SessionBean刚好相反,每次运行的结果都是可以预先确定的。

 

以上便是本人一点点对两种SessionBean浅薄的认识,希望各位高手多多指教。

 

分享到:
评论

相关推荐

    EJB3.0无状态SessionBean例子

    总结,EJB3.0无状态SessionBean的例子展示了如何利用注解简化开发流程,以及如何通过本地和远程接口进行组件间的通信。理解并掌握这些概念对于构建可扩展、健壮的企业级Java应用至关重要。通过学习这个示例,开发者...

    ejb实例包括session bean和实体bean

    总结来说,EJB实例,特别是Session Bean和Entity Bean,是Java EE平台的关键组成部分,它们为企业应用提供强大且灵活的组件模型,用于实现业务逻辑和数据管理。了解和掌握EJB技术,对于开发高质量、可扩展的企业级...

    EJB2 SessionBean

    总结,EJB2 Session Bean是Java企业级开发中的重要组成部分,它提供了一种组织和执行业务逻辑的方法,支持本地和远程调用,具有完善的事务管理和生命周期管理机制。通过EJBClient,客户端可以方便地与Session Bean...

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

    总结来说,Java EJB中的有状态和无状态Session Bean各有特点,开发者需要根据应用需求选择合适的类型。理解它们的工作原理和应用场景对于构建高效、可靠的Java EE应用程序至关重要。在实际开发中,合理利用这两种...

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

    总结来说,Java EJB中的有状态和无状态Session Bean是实现业务逻辑的关键组件。它们提供了一种方式来封装和解耦服务器端的复杂逻辑,同时为客户端提供了简单、一致的接口。理解和熟练掌握这两种类型的Session Bean,...

    Xdoclet生成SessionBean 和 EntityBean代码(初识ejb)

    【Xdoclet生成SessionBean和EntityBean代码(初识ejb)】 Xdoclet是一个强大的文档生成工具,尤其在Java Enterprise Edition(JEE)环境中,它能够自动生成EJB(Enterprise JavaBeans)所需的代码和配置文件,从而...

    Java EJB中有、无状态SessionBean的两个例子源码

    总结来说,Java EJB的SessionBean是实现业务逻辑的关键组件,它们根据需要维持或不维持客户端状态,以满足不同场景的需求。理解和掌握如何有效地使用有状态和无状态SessionBean是Java EE开发者必备的技能。通过分析...

    EJB容器对bean的管理

    总结来说,EJB容器通过实例池化、不同类型的bean管理策略以及激活和钝化机制,有效地管理bean资源,提供高效、可靠的企业级服务。这些机制确保了Java EE应用在处理大量并发请求时的性能和可扩展性,同时降低了开发者...

    EJB3开发第一个无状态会话bean

    无状态会话 Bean(Stateless Session Bean)是企业级 Java(EJB)3.0 中的核心组件,主要用于实现业务逻辑,它不保存任何特定客户端的状态信息。本篇文章将深入讲解如何在 EJB3 中开发第一个无状态会话 Bean,以及...

    EJB系统开发实战录之四

    ### EJB系统开发实战录之四 — Session Bean与Session Façade Design Pattern详解 #### 一、Session Bean概述 在EJB(Enterprise JavaBeans)体系结构中,**Session Bean**扮演着极其重要的角色,它是实现业务...

    eclipse + JBoss 5 + EJB3开发指南

    #### (1):编写第一个无状态的SessionBean ##### 一、配置开发环境 在开始编写无状态的SessionBean之前,首先需要确保开发环境已经正确配置。以下是所需的主要组件: 1. **Eclipse**:版本3.4.2,推荐使用针对...

    实战EJB之三 开发会话Bean(有状态会话Bean).doc

    开发一个有状态会话Bean需要继承javax.ejb.SessionBean接口,并实现相应的生命周期方法,如ejbCreate()、ejbRemove()、ejbPassivate()、ejbActivate()等。 5. 部署到应用服务器 在部署到应用服务器时,需要配置ejb...

    EJB方面面试题.doc

    1. **Session Bean**:提供临时的业务逻辑服务,可以是有状态(Stateful Session Bean)或无状态(Stateless Session Bean)。有状态的Session Bean可以跟踪用户会话状态,而无状态的Session Bean不维护用户状态,更...

    ejb skeleton

    总结来说,EJB Skeleton是理解EJB架构和组件的起点,它涵盖了EJB的基本概念,如Session Bean的类型、生命周期、接口设计和命名规范,这些知识对于开发基于Java EE的企业级应用程序至关重要。通过深入学习和实践,...

    Bean开发实例之二有状态会话Bean开发实例

    public class CartBean implements javax.ejb.SessionBean, java.io.Serializable { private String cardHolderName; private String creditCardNumber; private Vector&lt;Item&gt; items; public void ejbCreate...

    SessionBeanView

    【SessionBeanView】是与Java企业版(Java EE)中的Enterprise JavaBeans(EJB)技术相关的概念,特别是Session ...而"sessionbean4.exe"则可能是辅助学习和理解Session Beans的工具或示例,提供了实际操作的机会。

    书店简单实现(ejb2.0+hiberante3.0)

    总结,通过EJB 2.0有状态Session Bean和Hibernate 3.0,我们可以构建出一个健壮、可扩展的书店系统,具备购物车管理、书籍信息展示等功能。这样的系统设计既保留了面向对象的简洁性,又充分利用了企业级服务的强大...

Global site tag (gtag.js) - Google Analytics