EJB系列 - 会话Bean基础知识
本人博客文章网址:https://www.peretang.com/basic-knowledge-of-session-bean/
什么是会话
有限的时间周期内,客户端和服务器之间的连接
为什么使用会话bean
因为EJB大部分服务都是专门提供给会话bean的
1. 并发和线程安全: 容器利用很多技术来自动确保开发者不必担心并发或线程安全的问题
2. 远程处理和Web服务的服务提供
3. 事务和安全管理
4. 拦截器
会话bean的规范
1. 至少具有一个业务接口(EJB3.1后可以不需要)
2. 会话bean必须是具体的, 不能把会话bean定义为final的, 或抽象的
3. 会话bean中必须有无参的构造器
4. 可以在会话bean类或者父类中定义业务方法和生命周期回调方法
5. 会话bean可以是另一个会话bean或者任何其他POJO的子类, 当是另一个会话bean 的子类时, 父类中定义的生命周期回调方法和依赖注入的注解都会被当前bean类继承
6. 会话bean方法不能以"ejb"开头, 所有业务方法都必须为公开的, 不能是final或者静态方法, 另外如果该会话bean是remote的话, 所有入参和出参都必须实现序列化接口
业务接口
1. 本地接口:@Local 相同的容器(JVM)实例中进行协同操作
2. 远程接口:@Remote 不同的容器(JVM)实例中进行协同操作 通过RMI进行访问
3. Web服务端点接口:@WebService 为无状态bean独有,可以把无状态bean暴露为基于SOAP的Web服务
处理多个业务接口:不能用一种以上的访问类型注解标记同一个接口,可以选择用父接口,然后子接口继承来避免代码重复
无状态会话bean
用于建模不维护会话状态的任务
有两种创建模式, 一种是池化, 由容器创建会话bean池, 并创建相应数量的会话bean示例, 并对其进行管理; 另一种是单例模式(需要EJB3.1及以后的版本才支持)
注解:@Stateless 通知容器该类是无状态bean,容器会自动为bean提供:并发控制,线程安全,池化,事务管理等服务
有状态会话bean
用于建模需要维护会话状态的任务,EJB容器会为我们保持会话的状态
必须有使用@Remove注解的方法
注意项:适当选择会话的数据,尽量使用占有资源小的数据;记得使用钝化和删除
替代方式:如果是Web应用,使用HttpSession来维护状态
会话bean最佳实现
1. 选择会话bean类型, 即是有状态bean还是无状态bean
2. 分析会话bean接口类型(@Local,@Remote)
3. 不要把有状态会话bean注入无状态会话bean或者Servlet中
4. 分割横切事务项(使用拦截器AOP来处理)
5. 有状态会话bean中储存的数据类型(慎重选择)
6. 有状态会话bean必须定义@Remove注解的方法
EJB系列 - 会话Bean基础知识的更多相关文章
- Spring Ioc源码分析系列--Ioc的基础知识准备
Spring Ioc源码分析系列--Ioc的基础知识准备 本系列文章代码基于Spring Framework 5.2.x Ioc的概念 在Spring里,Ioc的定义为The IoC Containe ...
- 【Linux系列】Linux基础知识整理
Linux操作系统在服务器领域广泛的使用到,作为一个后台开发工程师很有必要了解Linux相关的知识. 本篇日志是我学习Linux过程中的简单记录和总结.本着"理论够用,实践为主"的 ...
- .NET面试题系列[3] - C# 基础知识(1)
1 类型基础 面试出现频率:基本上肯定出现 重要程度:10/10,身家性命般重要.通常这也是各种招聘工作的第一个要求,即“熟悉C#”的一部分.连这部分都不清楚的人,可以说根本不知道自己每天都在干什么. ...
- 玩耍Hibernate系列(一)补充--基础知识
基本概述: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库,Hibernate可以应用在任何 ...
- 前端系列之CSS基础知识概述
1.什么是DIV (1).div就是html一个普通标签,进行区域划分.特性:独自占一行.独自不能实现复杂效果.必须结合css样式进行渲染. (2).div通常其是块级元素 (3).div是定义文档中 ...
- Objective-C系列总结之基础知识
//第一个程序示例 #import <Foundation/Foundation.h> int main(int argc,const char * argv[]) { @autorele ...
- .NET面试题系列[4] - C# 基础知识(2)
2 类型转换 面试出现频率:主要考察装箱和拆箱.对于有笔试题的场合也可能会考一些基本的类型转换是否合法. 重要程度:10/10 CLR最重要的特性之一就是类型安全性.在运行时,CLR总是知道一个对象是 ...
- 前端系列之JavaScript基础知识概述
微信公众号:compassblog 欢迎关注,欢迎转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.什么是JavaScript (1).JavaScript是web上一种功能强大的编程语 ...
- 前端系列之HTML基础知识概述
1.什么是HTML HTML:Hyper Text Markup Language :超文本标记语言. 超文本:功能比普通文本更加强大. 标记语言:使用一组标签对内容进行描述的语言,它不是编程语言. ...
随机推荐
- php代码效率小常识
1, 尽量不要使用@来进行抑制错误,效率很低 2,能使用单引号时不要使用双引号 3,echo的效率比print要高,同时echo可以输出多个变量 4,使用include,require时候最好使用绝对 ...
- 1012 u Calculate e
A simple mathematical formula for e iswhere n is allowed to go to infinity. This can actually yield ...
- java虚拟机总结
jvm内存模型 u 程序计数器 u Java栈(虚拟机栈) u 本地方法栈 u Java堆 u 方法区及其运行时常量池 垃圾回收机制 u 新生代和老年代 u 参数设置 u 垃圾回收(M ...
- 2016年BAT公司常见的Web前端面试题整理
1.JavaScript是一门什么样的语言,它有哪些特点? 没有标准答案. 2.JavaScript的数据类型都有什么? 基本数据类型:String,boolean,Number,Undefined ...
- OC-不可变数组NSArray
- 通过一步步创建sharded cluster来认识mongodb
mongodb是目前使用非常广泛的nosql(not only sql)之一,在db engines上排名非常靠前,下图是5月份的排名: 可以看到前面四个都是传统的关系型数据库,而mongodb在no ...
- 全景智慧城市——NOW!!!VRSHOPPING颠覆你的购物认知!
互联网+时代,人们对现有的网络资源已经不再感冒,一般的图片.文字信息已经无法满足人们对互联网的需求,虚拟现实.身临其境的体验是不可小觑的发展趋势,尤其是VR逛街.购物,更会深入人心,再次改变人们的生活 ...
- Android分享功能实现
通过系统分享组件实现分享功能 Intent.createChooser() 方法用来弹出系统分享列表. createChooser(Intent target, CharSequence title, ...
- 用JS添加和删除class类名
下面介绍一下如何给一个节点添加和删除class名 添加:节点.classList.add("类名"): 删除:节点.classList.remove("类名") ...
- Thread in Java
References: [1]. http://www.javaworld.com/article/2074481/java-concurrency/java-101--understanding-j ...