EJB系列 – 会话Bean基础知识

科技动态 2017-06-20 阅读原文

什么是会话

有限的时间周期内,客户端和服务器之间的连接

为什么使用会话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注解的方法

博客园精华区

责编内容by:博客园精华区阅读原文】。感谢您的支持!

您可能感兴趣的

Scaling a Web Service: Load Balancing This post is going to look at one aspect of how sites like Facebook handle billions of requests and stay highly available: load balancing. What is a...
我是如何收集厂商ip段,并进行简单的信息探测的... 大家知道渗透测试中的信息收集是很关键步骤。其中能够准确全面的找到厂商的ip段,又是其中很重要的。相信大部分的人对厂商的子域名,都会做很详细的收集。但是对ip段却没做这么细致的收集。今天我就分享下我是怎么收集厂商的ip段的,然后做信息初步探测的。 一、收集厂商的ip段 1、首先用的seay的子...
Why Use Spring to develop Java Web Services? REST has now become a standard way to develop web services and when it comes to Java, there are many frameworks and libraries available, e.g. JAX-RS,...
Return Custom Status Code from Rest Controller In this Spring MVC tutorial, you will learn how to make a method in your Rest Controller return a custom or a specific HTTP Status code. To return ...
Upload Files To A Remote Web Service Via A Vue.js ... A few weeks back I wrote about accepting file uploads in a Node.js application that uses Hapi framework. This was a followup to an article I wrote ti...