EJB3.0使用文档

preview
需积分: 0 0 下载量 195 浏览量 更新于2012-05-16 收藏 34KB DOC 举报
### EJB 3.0 使用文档详解 #### 一、EJB 3.0 概述 企业 Java Beans (EJB) 是一种基于组件的企业级应用程序模型,它为开发复杂的应用程序提供了支持。EJB 3.0 版本引入了许多简化开发过程的新特性,比如对注解的支持,使得开发者能够更加专注于业务逻辑而非复杂的配置。 #### 二、会话 Bean 的分类及特点 ##### 1. 有状态会话 Bean (Stateful Session Bean) - **特点**:有状态会话 Bean 被设计用来维护与特定客户端的会话状态。 - **生命周期管理**:EJB 容器为每个客户端会话创建并管理一个单独的 Bean 实例。 - **示例**:在电子商务应用中,可能需要为每个用户购物车的操作创建一个会话 Bean。 - **注解**:`@Stateful` 表明 Bean 的有状态性质。 - **远程接口**:`@Remote` 标注的接口允许来自 EJB 容器外部的应用程序访问会话 Bean。 - **本地接口**:`@Local` 标注的接口仅限于 EJB 容器内部的组件访问。 ##### 2. 无状态会话 Bean (Stateless Session Bean) - **特点**:无状态会话 Bean 不保存任何会话状态,它们可以为多个客户端提供服务。 - **开发关键字**:`@Stateless` 标明 Bean 为无状态类型。 - **优势**:由于不需维护状态,无状态会话 Bean 在高并发环境下性能更优。 - **应用场景**:适合处理简单的业务逻辑或计算任务,例如数据验证或简单计算。 #### 三、会话 Bean 的 JNDI 查找与绑定 - **JNDI 名称绑定**:通过 `@RemoteBinding` 注解指定 JNDI 绑定名称。 - **示例**: ```java @RemoteBinding(jndiBinding = "foshanshop/RemoteOperation") public interface Operation { void performOperation(); } ``` - **客户端查找**: ```java InitialContext ctx = new InitialContext(); Operation operation = (Operation) ctx.lookup("foshanshop/RemoteOperation"); ``` #### 四、事务拦截器 - **拦截器类**:实现事务逻辑的类,可以通过 `@Interceptors` 注解应用于特定的 EJB 或方法上。 - **实现步骤**: 1. 在类或方法前添加 `@Interceptors(XXX.class)` 注解。 2. 实现 `XXX.class` 注解中所引用的接口。 3. 在方法前添加 `@AroundInvoke` 注解,以实现事务控制逻辑。 4. 实现方法 `public Object log(InvocationContext ctx)`,其中可以编写自定义事务逻辑。 5. 最终通过 `ctx.proceed()` 方法继续执行后续操作。 - **禁用拦截器**:使用 `@ExcludeDefaultInterceptors` 注解可以禁用默认的拦截器。 #### 五、依赖注入 - **注解**:EJB 3.0 支持使用注解来进行依赖注入。 - `@EJB`:用于注入 EJB 业务对象。 - `@PersistenceUnit`:用于注入 `EntityManagerFactory`。 - `@PersistenceContext`:用于注入 `EntityManager`。 - `@Resource`:用于注入其他资源对象,如连接工厂、消息目标等。 - **示例**: ```java @EJB(beanName = "HelloWorldBean") private HelloWorld helloworld; public void setHelloworld(HelloWorld helloworld) { this.helloworld = helloworld; } ``` - **查找注册表**:虽然可以使用 JNDI 查找方式注入依赖,但这种方式较不推荐,因为存在潜在问题且不如注解方式简洁高效。 #### 六、方法重载与覆盖 - **重载**:指在同一类中定义多个具有相同方法名但参数列表不同的方法。 - **覆盖**:子类中定义一个与父类中的方法具有相同签名的方法,即方法名、参数列表以及返回类型都相同。 - **注解**:使用 `@Override` 注解可以明确标识出一个方法是用于覆盖父类中的方法。 ### 总结 EJB 3.0 相比早期版本有了显著改进,尤其是在简化开发流程方面。通过使用注解来替代 XML 配置文件,极大地提高了开发效率。了解 EJB 3.0 中的不同组件及其使用方法对于开发健壮的企业级应用至关重要。同时,掌握事务管理和依赖注入机制有助于构建更加可靠、易于维护的应用系统。