## 一,什么情况下需要企业Bean
企业Bean运行在EJB容器中。企业Bean实际上就是一个封装了业务逻辑的Java类。
需要使用EJB的N个理由:
1,分布式!分布式对象之间的相互协作,完成特定的业务功能。分布式对象之间应实现分布透明性(或位置透明性)。即在客户端代码中无需指定分布式对象的位置(通过配置来解决)。
2,分布式对象之间的事务支持(RMI不支持事务)。
3,应用程序需要支持不同的客户端,只需要少量的代码,就可以让远程客户端访问到企业Bean。
so,如果你的应用需要分布式部署,+分布式对象需要支持事务+关键业务逻辑需要能够支持不同类型的客户端,那么EJB将是很好的选择。
## 二,EJB的基本分类
###1,Enterprise Bean
1,Session Bean (会话Bean) :会话Bean可以执行业务逻辑操作,比如注册用户,订单登记,数据库操作等等。
(会话(session):即从客户端获取EJB对象开始,然后调用EJB方法(可以多次),直到客户端生 命周期结束,或客户端释放了EJB对象为止,成为一次会话。随着会话的终止,EJB对象也有可能会被EJB容器销毁。
对象的状态:对象的状态是由其实例变量的值组成的。)
tateless Session Bean——无状态会话Bean
(并非是说EJB不能存在状态,而是说EJB容器不会对EJB的状态做管理
容器会使用实例池的方式,甚至单例的方式来实现无状态Session Bean
因为EJB容器不会对stateless session bean的状态进行管理,所以它的性能要比stateful session bean 的好)
Steteful Session Bean——有状态的会话Bean
( 有状态的会话Bean:即EJB能够为同一个客户端在多次请求(方法调用)之间保持状态信息。)
2, Message Driven Bean(MDB)——消息驱动Bean,基于JMS
###2,Persistence——持久化
Entity Bean——实体Bean
## 三,定义客户端访问的接口
客户端仅通过业务逻辑Bean所定义的接口来访问业务逻辑(跟具体实现无关)。
当在开发企业Bean之前,首先要做的第一个决定是:EJB要支持什么样的客户端?因为不同 的客户端,其访问方式也将不同。
**1,远程客户端——客户端与其调用的EJB对象不在同一个JVM进程中**
**一个远程客户端有如下特性:**
1,它可以运行在跟企业Bean不同的机器或不同的JVM进程上
2,它可以是web组件,应用客户端,或其他企业Bean
3,对远程客户端来说,企业Bean的位置是透明的
4,为了创建一个能够被远程客户端访问的企业Bean,必须用@Remote注解来定义这些企业Bean。
**2,本地客户端——客户端与其调用在同一个JVM进程中**
本地客户端具有如下特性:
1,它必须与企业Bean运行在同一个JVM中
2,它可能是一个Web组件或别的企业Bean
3,为了创建一个能够被本地访问的企业Bean,你必须用@Local注解来定义这些企业Bean
4,一个企业Bean接口可以同时被定义为@Remote和@Local
**3,WebService客户端**
webservice客户端可以访问无状态会话Bean接口,只有在业务逻辑方法被标识为@webMethod的时候,web service 客户端才可以访问到。
- 前言
- Spring简化配置
- Spring中使用AspectJ实现AOP
- Spring中JDK的动态代理和CGLIB代理的区别
- Spring配置问题——元素 "context:component-scan" 的前缀 "context" 未绑定
- Hibernate中编程式事物的简单使用
- 使用Spring为Hibernate配置声明式事物
- Struts2+AJAX获取json数据
- 中间件概述
- EJB(Enterprise Java Bean)概述
- JBoss 6.1安装配置问题
- EJB对象的部署及客户端调用简单示例
- 有状态的EJB对象和无状态的EJB对象
- EJB远程调用和本地调用
- MyBatis——入门select