创建 Java™ 或 EJB 项目之后,您可以创建会话 Bean、实体 Bean 和消息驱动的 Bean 以添加到项目中。
企业 bean
企业 Bean 是 Java 组件,可与其他资源一起使用以创建
Java 应用程序。有三种类型的企业 bean:实体 bean、会话 bean 和消息驱动的 bean。所有 Bean 都位于 Enterprise Java Bean (EJB) 容器中,此容器提供
Bean 和它们所在的应用程序服务器之间的接口。
EJB 3.1 规范不推荐使用 EJB 1.1 类型实体 Bean。Java Persistence API (JPA) 规范旨在替换建议不要使用的企业 Bean。虽然 JPA 替代项被称为实体类,但不应该将其与实体企业 Bean 相混淆。JPA 实体不是企业 Bean,也不要求在 EJB 容器中运行。
您还能够在 Web 3.0 项目中创建 EJB 3.0 和 3.1 Bean。
组件定义的注释
使用组件定义的注释,您可以创建以下类型的企业 Bean:会话 Bean、消息驱动的 Bean 和 JPA 实体。通过包括组件定义的注释 @Stateful 和@Stateless 来指示该类是会话 Bean 类;通过包括组件定义的注释 @Singleton 来指示该类是单项类;通过包括组件定义的注释 @MessageDriven 来指示该类是消息驱动的 Bean 类;通过包括组件定义的注释 @Entity 来指示该类是 JPA 实体。
- 会话 Bean:使用 EJB 3.1 规范开发的会话 Bean 至少需要一个 Bean 类。
- 有状态:有状态会话 Bean 维护多个方法调用和事务之间特定于客户机的会话信息或会话状态。有状态会话 Bean 的实例具有由容器在创建时指定的唯一身份。
- 无状态:无状态会话 Bean 不维护会话状态。无状态会话 bean 的实例不具有对话状态。因为无状态会话 EJB 不维护会话状态,所以必须将客户机与 EJB 之间交换的所有数据作为在 EJB 业务方法接口上声明的输入参数或返回值进行传递。
无状态会话 bean 的所有实例都具有相同的对象标识,该标识由容器指定。
- 单独:单独会话 Bean(EJB 3.1 中的新增内容)是一种新的会话 Bean,保证对特定 Java 虚拟机 (JVM) 中的应用程序进行实例化一次。单独会话 Bean 提供了与无状态会话 Bean 类似的功能,但与无状态会话 Bean 不同:每一个应用程序只有一个单独会话 Bean,而不是一个无状态会话 Bean 池(其中任何一个都可以对客户机请求做出响应)。与无状态会话 Bean 类似,单独会话 Bean 可以实现 Web Service 端点。单独会话 Bean 维护它们在客户机调用之间的状态,但在服务器崩溃或关闭期间维护其状态时不是必需的。
- 消息驱动的 Bean:EJB 2.0 中引入了消息驱动的 Bean 以支持对来自 Java 消息服务 (JMS) 的异步消息进行处理。EJB 2.1 规范扩展了消息驱动的 Bean 的定义,以便它可以支持任何消息传递系统,而不仅限于支持 JMS。用最简单的术语来讲,消息驱动的 Bean 是可由其容器调用的消息使用者。每当消息抵达时,该容器都会对它们进行调用。消息 Bean 是用于调用 EJB 的另一种交互机制,但与会话 Bean 不同,每当消息抵达时容器(而不是客户机或另一个 Bean)负责对它们进行调用。
- 使用 Java Persistence API (JPA) 的实体:实体使用新的 Java Persistence API,该 JPA 是 Java EE 5 平台的一部分。与使用容器管理的持久性 (CMP) 的 EJB 组件不同,使用新 API 的实体对象不再是组件,只是 Java 对象。
这使实体变得更轻量级以及编程模型更易于使用。有关 JPA 的更多信息,请参阅 JPA 文档。
适用于开发 EJB 的准则
虽然 EJB
3.1 提供了灵活简单的编程模型,但以下仍建议一些适用于开发 EJB 的规则:
- 每一个实体都必须是一个 POJO,并且类必须是具体类(因此,不是抽象类或终态类)。
- 该类必须具有无参构造方法;如果不存在,那么编译器将添加缺省构造函数
- POJO 必须实现至少一个 POJI(无格式普通 Java 接口);您不需要包括接口,但可以包括本地或远程客户机的其他接口。
- 如果业务接口包括 @Remote 注释,那么在该接口上声明的所有参数都必须实现 java.io.Serializable。
- 会话 EJB 可以成为 POJO 的子类,但不能成为另一个会话 EJB 的子类。
可以通过下列其中一种方法来创建企业 Bean:
- 使用向导创建新的企业 Bean。
- 使用 Java EE 注释创建新的企业 Bean。
- 从 EJB JAR 文件导入企业 bean。