Session bean
1 規則
1.1 至少必須具有一個業務接口
1.2 會話bean類必須是具體的,不可以是abstract或final的
1.3 必須具有無參的構造函數
1.4 可以在bean類或是其父類中定義業務方法和生命周期回調方法
1.4.1 會話bean支持的annotation在繼承時有若干限制
1.5 會話bean類可以是另一個會話bean或任何其他pojo的子類
1.6 業務方法不能以ejb開頭
1.6.1 可能會干擾ejb的基礎結構
1.6.2 業務方法必須是public的,并且不可以是final和static的
1.6.3 如果暴露remote接口的方法,必須保證參數和返回類型實現java.io.serializable接口
2 會話狀態conversational state
2.1 stateful bean
2.1.1 建模多步驟處理
2.2 stateliss bean
2.2.1 建模一般的實用性服務
3 lifecycle callback
3.1 annotation
3.1.1 postConstruct
3.1.1.1 stateful,stateliss,MDB
3.1.1.1.1 bean創建后和依賴注入后,初始化資源
3.1.2 preDestory
3.1.2.1 stateful,stateliss,mdb
3.1.2.1.1 銷毀bean之前調用,清理資源
3.1.3 postActivate
3.1.3.1 stateful
3.1.3.1.1 激活之后,回復資源
3.1.4 prePassivate
3.1.4.1 stateful
3.1.4.1.1 鈍化之前,清理資源
3.2 使用注解标记的方法,可以是private,protected,public,package-protected的
4 stateless session bean
4.1 @stateless
4.1.1 name:bean名称
4.1.2 mappedName:厂商专有名称,一些容器使用此名称赋值全局jndi名称
4.1.3 description:描述
4.2 business interfaces
4.2.1 @Local
4.2.2 @Remote
4.2.2.1 接口方法的参数和返回值都必须是可以serialize的
4.2.3 @WebService
4.2.4 不可以使用一种以上的访问类型标记一个接口
4.2.5 一个业务接口可以扩展另一个接口
4.2.6 可以在bean类中使用注解,但不实现业务接口
4.2.6.1 @Remote(BidManager.class)
4.3 lifecycle callback
4.3.1 类或拦截器中给定的bean可以有多个postConstruct和preDestory回调
5 stateful session bean
5.1 附加规则
5.1.1 存储会话状态的字段必须是原始类型或是Serializable对象
5.1.2 @Remove注解删除客户端使用的bean实例
5.1.3 prePassivate postActivate
5.2 passivate钝化
5.2.1 钝化的本质:将bean串行化保存到磁盘中
5.2.2 @prePassivate
5.2.2.1 将不可串行化的值复制到可串行化的变量中
5.2.2.2 释放重型资源
5.2.2.3 清除不必要数据
6 compare between stateless and stateful bean
6.1 会话状态
6.1.1 无:no
6.1.2 有:yes
6.2 池化
6.2.1 无:yes
6.2.2 有:no
6.3 性能问题
6.3.1 无:不太可能
6.3.2 有:可能
6.4 生命周期事件
6.4.1 无:postConstruct,preDestory
6.4.2 有:postConstruct,preDestory,postActivate,prePassivate
6.5 计时器
6.5.1 无:yse
6.5.2 有:no
6.6 用于事务的sessionSynchronization
6.6.1 无:no
6.6.2 有:yes
6.7 web服务
6.7.1 无;yes
6.7.2 有:no
6.8 扩展的persistenceContext
6.8.1 无:no
6.8.2 有:yes
7 session bean clients
7.1 获得ejb引用
7.1.1 ejb上下文查找
7.1.2 jndi查找
7.1.3 依赖注入
7.1.3.1 @EJB
7.1.3.1.1 name:在环境命名上下文中用于注入的ejb的jndi名称
7.1.3.1.2 beanInterface
7.1.3.1.2.1 业务接口
7.1.3.1.3 beanName
7.1.3.1.3.1 区分bean,如果多个ejb组件实现同一个业务接口
7.1.3.2 只能在受管理的环境中使用
7.1.3.2.1 其他ejb
7.1.3.2.2 运行在Acc中代码
7.1.3.2.3 使用web容器注册的组件
7.1.3.3 不可以将有状态bean注入到无状态bean中
8 stateful bean 性能注意事项
8.1 适当选择会话数据
8.1.1 避免存储大对象
8.2 钝化和删除bean
8.3 替代方式
8.3.1 持久化和无状态处理
8.3.2 在客户端构造维护状态的某种机制
8.3.2.1 难以保证高可用性,丧失容器提供的优势
8.3.3 client在web层,在web容器中使用session保存会话状态
8.3.3.1 session过多同样可能造成servlet容器性能降低
9 最佳实践
9.1 谨慎选择bean类型
9.1.1 有状态会话bean会有代价
9.1.2 如果client在web层可以考虑httpServlet
9.2 谨慎分析会话bean接口的类型
9.2.1 如果客户端和bean在同一个jvm中运行,就是用local接口
9.3 如果使用依赖注入,不要把stateful bean注入到stateless bean中
9.4 分隔横切事项
9.4.1 拦截器
9.5 谨慎分析在会话bean中存储的数据类型
9.5.1 尽可能在stateful bean 中使用原始类型变量,而不是大型的嵌套符合对象
9.6 stateful bean中不要忘记定义@Remove方法
9.7 调整钝化和激活配置,找到应用程序的最佳值
分享到:
相关推荐
JavaBean和Session Bean是Java企业级应用开发中的重要概念,特别是在使用Enterprise JavaBeans(EJB)技术时。本文将深入探讨这两个概念,以及如何在实际项目中使用它们。 首先,让我们了解什么是JavaBean。...
**企业级JavaBeans (EJB) 3.0:核心概念与Session Bean详解** 企业级JavaBeans(Enterprise JavaBeans,简称EJB)是Java平台上用于构建可部署在服务器端的企业级应用的重要组件模型。EJB 3.0是EJB规范的一个重大...
在Java企业级应用开发中,SessionBean是Java服务器端组件(Java EE)的一部分,它扮演着客户端和数据库之间的重要中介角色。本教程将通过具体的例子深入解析SessionBean与客户端的结合,以及如何与Oracle数据库进行...
**SessionBean:深入理解与应用** SessionBean是Java EE(Enterprise Edition)中企业级JavaBeans(EJB)的一部分,主要用于实现服务器端的业务逻辑。它是一个可复用的组件,可以处理客户端的会话状态,提供了在...
**EJB3.0无状态SessionBean例子** Enterprise JavaBeans(EJB)是Java平台上的一个核心组件,用于构建企业级分布式应用。EJB3.0是EJB规范的一个重大改进,它引入了诸多简化开发的新特性,使得EJB更加轻量级且易于...
与Stateful Session Bean(有状态会话Bean)不同,它维护了客户端会话状态,而Stateless Session Bean(无状态会话Bean)则不保留任何客户端状态,每次调用都独立于其他调用。Session Bean主要用于表示业务逻辑,...
### EJB3图文教程之开发Session Bean:详细解析与实践指南 #### 一、环境搭建:JBuilder2007与JBoss4.0的完美结合 在开始EJB3.0的Session Bean开发之前,首先需搭建一个适宜的开发环境。本教程将指导你如何在...
EJB系统主要包括两种主要类型的Bean:Session Bean和Entity Bean。 **Session Bean** Session Bean是EJB中的临时业务对象,代表客户端的一次会话或操作。它们通常用于封装业务逻辑,执行计算任务,或者协调与数据库...
它可以是无状态的(Stateless Session Bean),为每个请求创建新的实例,或者有状态的(Stateful Session Bean),维护与特定客户端会话的状态。 - **Entity Bean**:用于表示数据库中的持久化对象,实现业务实体的...
在Java EE中,SessionBean是企业 Bean(EJB)的一种类型,它提供了服务器端的方法来处理客户端的请求。SessionBean分为两种主要类型:有状态(Stateful Session Beans,SSB)和无状态(Stateless Session Beans,SSB...
标题"Stateful--sessionbean.zip_sessionBean_stateful"表明这个压缩包包含有关有状态会话Bean的实现资料,可能包括设计思路、步骤截图和源代码。这些资源对于理解如何创建和使用SFSB至关重要。 描述中的"有状态的...
在"ejb sessionbean demo"中,我们主要探讨的是如何使用EJB的Session Bean进行开发和演示。Session Bean通常用于实现业务逻辑,它们可以是无状态的,意味着每个请求都会创建一个新的Bean实例,不保留任何先前会话的...
Java SessionBean状态判断的例子,代码包中的两个实例,分别对无状态SessionBean和有状态SessionBean进行了演示,请注意,Home对象是EJB对象的制作生成库,该方法生成EJB对象,value参数用于计数器的初始化,在无状态...
"itfuture_sessionbean"的第二部分可能是指一系列教程或学习资料,聚焦于深入理解Session Bean的使用和实现。JBulider作为标签,表明这些材料可能与使用JBulider这一集成开发环境(IDE)来创建和管理Session Bean...
**EJB Session Bean详解** Enterprise JavaBeans (EJB) 是Java平台企业版(Java EE)的核心组成部分,它为构建可扩展、安全且事务处理的分布式应用程序提供了强大的框架。EJB中的Session Bean是其中一类重要的组件...
**EJB2 SessionBean**是Java企业版(Java EE)中的一个重要组件,它代表了业务逻辑层,主要用于处理应用程序的核心业务操作。SessionBean是可复用的Java对象,通过远程接口提供服务,允许客户端(如Web层或客户端...
基于java的开发源码-EJB中有、无状态SessionBean的两个例子.zip 基于java的开发源码-EJB中有、无状态SessionBean的两个例子.zip 基于java的开发源码-EJB中有、无状态SessionBean的两个例子.zip 基于java的开发源码-...