EJB3.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 中的不同组件及其使用方法对于开发健壮的企业级应用至关重要。同时,掌握事务管理和依赖注入机制有助于构建更加可靠、易于维护的应用系统。