`
baobeituping
  • 浏览: 1068580 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

EJB3(无状态会话BEAN)

阅读更多

无状态会话BEAN的生命周期很简单,只有两种状态:Does not exist和method-ready pool。

Method-Ready Pool是一个实例池,由未被使用的无状态会话BEAN对象组成。因为可能会有像依赖注入这样开销很大的操作,所以当这些实例不被使用的时候,将其存起来以备后续使用。这也是无状态会话BEAN和有状态会话BEAN的最大的区别。

 

无状态会话BEAN的生命周期:

Does not exist--(Class.newInstance()注入@PostConstruce)--Method-Ready-Pool--(@PreDestroy)--Does not exist

 

Does not exist状态:表示他在系统内存中没有实例存在,也就是没有被初始化。

Method-Ready POOL状态:当实例进入该状态,EJB服务器首次启动的时候,可能会创建一些无状态BEAN的实例,并使他们进入该状态(服务器的实际行动取决于具体实现)。当无状态BEAN的数量不足以为客户端请求提供服务,服务器将创建更多的实例,并将它添加到实例池中。

 

当实例从Does not exits到method-ready pool会执行三步操作:

1.容器首先调用无状态会话BEAN的Class.newInstance()方法来构造BEAN的一个实例。

2.容器通过注解或配置文件,将任何BEAN的元数据中声明的所需资源注入进来。

3.EJB容器会产生一个post-construction事件,BEAN可以将方法标注为@PostConstruct注解,为该事件注册一个回调方法。被标注的方法将在实例化以后被容器调用。回调方法可以使用任何名称,但是他必须返回VOID,不带参数,不能抛出任何checkde exception.每个BEAN只能定义一个@PostConstruct方法。

 

服务端代码:

接口:

package com.stateless.bean;

import javax.ejb.Remote;

@Remote
public interface TestStateless {
 
 public String sayHello(String name);
}

实现类:

package com.stateless.bean;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Stateless;

@Stateless
public class TestStatelessImpl implements TestStateless {

 @PostConstruct
 public void myInit()
 {
  System.out.println("初始化无状态会话BEAN");
 }
 
 @PreDestroy
 public void myDestroy()
 {
  System.out.println("初销毁无状态会话BEAN");
 }
 public String sayHello(String name) {
  // TODO Auto-generated method stub
  return "hello!"+name;
 }

}

客户端:

public static void main(String[] args) {
  try {
   
   InitialContext context = getInitialContext();
   TestStateless ts = (TestStateless) context.lookup("TestStatelessImpl/remote");
   System.out.println(ts.sayHello("tuping"));
   
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 

在服务端接到请求以后,会打印:

08:47:01,718 INFO  [STDOUT] 初始化无状态会话BEAN

 

表示调用以前,首先会调用@PostConstruct标签的方法。

 

 

 

 

处于method-ready pool状态,他就已经为响应客户端请求做好准备,当客户端调用EJB业务方法时,EJB容器会委派给任何一个处于该状态的BEAN实例,如果某个BEAN实例正在处理请求,那么直到它完成了相应的处理以后,才可以为其他的EJB所用。

当以个BEAN实例被换入,他的sessioncontext便会改变,以反映与之关联的EJB OBJECT的上下文。

 

离开method-ready pool状态,当EJB容器不再需要BEAN实例的时候,这一过程从BEAN的PREDESTROY事件被触发的那一刻开始,BEAN可以为某个方法添加PreDestroy注解,以响应该时间的回调方法。回调方法可以是任何名称,不带参数,返回为VOID。不能跑出任何异常。每个BEAN职能定义一个@PreDestroy方法。

分享到:
评论

相关推荐

    实验一 开发环境安装、配置及无状态会话Bean的创建

    实验一 开发环境安装、配置及无状态会话Bean的创建 在本实验中,我们将学习如何安装和配置 JBoss 服务器,配置 MyEclipse 环境,创建及测试 EJB3 无状态会话 Bean。本实验将帮助我们掌握 JBoss 的安装与配置,掌握...

    EJB3 示例有状态和无状态会话bean

    **EJB3(Enterprise JavaBeans 3)**是...总之,EJB3的有状态和无状态会话Bean提供了灵活的业务逻辑处理方式,适用于不同类型的场景。理解它们的区别以及如何在Web应用程序中进行测试和部署是Java EE开发者必备的技能。

    Jboss下开发ejb应用之一会话bean的应用

    通过以上讨论,我们对在Jboss环境下开发和使用EJB会话Bean有了更深入的理解。无论是无状态还是有状态,会话Bean都是构建企业级应用程序的重要组件,而Jboss作为强大的应用服务器,提供了丰富的功能来支持这些组件的...

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

    实战EJB之三开发会话Bean(有状态会话Bean) 本文主要讲解了有状态会话Bean(Stateful Session Bean)的概念、特点、生命周期和开发过程。下面是相关知识点的总结: 1. 什么是有状态会话Bean? 有状态会话Bean...

    使用JBoss 4.2书写EJB3.0无状态会话Bean + JPA + MySql 5.0的Hello World Java EE应用

    环境:Window XP profession, JDK 1.6, MySQL 5.0, JBoss...该示例使用EJB 3.0的无状态会话Bean呼叫JPA持久层完成数据库的操作,推荐广大企业级Java程序员项目中使用。 注意:连接池的配置参见上一个资源readme.txt文档

    无状态会话Bean实验指导.doc

    【无状态会话Bean实验指导】的文档主要涵盖了如何开发和测试无状态Session Bean的步骤,这是企业级JavaBeans(EJB)技术的一部分,属于中间件领域的知识。EJB是Java平台上的一个标准,用于构建可扩展、可靠的分布式...

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

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

    EJB 3.0无状态会话Bean应用

    该示例使用Eclipse 3.3 Europa IDE、JDK 6.0、GlassFish 2.0翻写的第一个EJB 3.0会话bean应用。注意:必须首先安装GlassFish服务器,可以通过安装NetBean 6.0(M9)来完成安装该服务器,或能单独安装也行,然后在...

    Eclipse+Jboss EJB技术 会话Bean

    在EJB中,会话Bean分为两种类型:无状态会话Bean(Stateless Session Bean)和有状态会话Bean(Stateful Session Bean)。无状态会话Bean不保留任何客户端特定的信息,每次调用都是独立的。而有状态会话Bean则可以...

    ejb有状态bean和无状态bean

    EJB主要分为三种类型:无状态会话Bean(Stateless Session Beans)、有状态会话Bean(Stateful Session Beans)以及实体Bean(Entity Beans)。本篇将深入探讨有状态Bean和无状态Bean的概念、区别以及它们的应用场景...

    关于有状态和无状态会话bean的解释

    在本文提供的ejb_02_Client和ejb_02这两个文件夹中,可能包含了演示如何使用EJB创建和调用有状态和无状态会话Bean的示例代码。通过研究这些代码,你可以更深入地了解这两种类型的Bean如何工作,以及如何在实际项目中...

    EJB3.0无状态SessionBean例子

    **EJB3.0无状态SessionBean例子** Enterprise JavaBeans(EJB)是Java平台上的一个核心组件,用于构建企业级分布式应用。EJB3.0是EJB规范的一个重大改进,它引入了诸多简化开发的新特性,使得EJB更加轻量级且易于...

    ejb3.0 第2,3讲-开发第一个无状态会话bean和客户端

    **ejb3.0 第2,3讲 - 开发第一个无状态会话bean和客户端** 在Java企业版(Java EE)中,Enterprise JavaBeans(EJB)是用于构建可扩展、安全和事务处理的服务器端应用程序的核心组件。EJB 3.0是一个重要的版本,它极...

    EJB 会话BEAN PPT

    【EJB会话BEAN PPT】概览 EJB,全称Enterprise JavaBeans,是Sun Microsystems(现Oracle)提出的一种服务器端组件模型,主要用于构建分布式应用程序。它在Java平台上扮演着重要角色,类似于微软的.NET技术,但具有...

    实验6-无状态会话bean.docx

    3. 创建无状态会话bean:在新创建的包中,通过“New”->“EJB3 Session Bean”生成bean,设定Session Type为Stateless,并为bean提供Local和Remote接口。 4. 声明业务方法:在Remote接口中定义公共方法,如计算个人...

    实验6-无状态会话bean.pdf

    3. 创建无状态会话Bean:在新建的包中,通过【New】->【EJB3 Session Bean】创建无状态会话Bean。为Bean命名(例如:SalaryEJB),选择无状态(Stateless)类型,并为Bean指定Local和Remote接口。 4. 声明业务方法...

    JavaEE5学习笔记05-EJB之会话Bean总结

    - **会话Bean (Session Bean)**:分为有状态会话Bean和无状态会话Bean,主要用于封装业务逻辑。 - **实体Bean (Entity Bean)**:在EJB 2.x中用于持久化数据到数据库,但在EJB 3.0中已经被JPA(Java Persistence API...

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

    - 在EJB Designer中创建一个新的有状态会话Bean (`Stateful Session Bean`)。 - 设置Bean的名字为`Cart`,并确保类型为有状态。 3. **定义Bean的属性**: - 定义三个属性:`cardHolderName` (String) 表示持卡人...

Global site tag (gtag.js) - Google Analytics