定义容器在理解 EJB 规范时容器这个术语并不应从字面上简单地理解为类,而是一层代
替 bean 执行相应服务的接口。容器开发商提供运行在EJB 服务器中一套完成这些功能的
工具和接口。
这些服务包括:
·与二级存储中交换(对会话bean)
·持久性管理(对实体bean)
·实现创建和查找服务的home object 的可用性
·在可通过JNDI 访问的名字空间home object 的可视性
·正确的创建、初始化和删除bean
·保证商业方法正确地运行在事务上下文中
·实现某一基本的安全服务
·从home object 和EJBObject 上的RMI 上产生stub 和skeleton
容器和EJBObject 对规范经常引用由容器或EJBObject 提供的服务。这些服务只是用来说
明而不暗示特殊类的服务需求。支持 enterprise bean 的EJBObject 和容器类都由容器开
发商提供。这些类必须完成 bean 容器的功能。对bean 来说容器和EJBObject 是不同的入
口点,对某个特殊的服务提供支持独特的能力。例如,容器通过读部署描述符来知道应
用于 bean 方法的事务属性。然而,这些商业方法通过EJBObject 调用。
EJBObject 必须与容器通讯来确定调用商业方法的事务上下文。确定以后,EJBObject 在
调用商业方法以前建立事务上下文。重要的是 EJBObject 和容器的协同工作来实现容器
所需的事务。容器厂商提供二者的实现,但对二者的功能分割却是自由的。与 home 接口
的关系
目前厂商提供工具来读 home 接口并产生作为容器的home object.在这种情况下厂商对
每个 enterprise bean 类使用不同的容器类。容器厂商可以使用其它的实现策略,如一
个容器类实现多个 home 接口,甚至一个标准的容器类创建独立的home object 实现。唯
一的必要条件是容器厂商必须使客户端能通过 JNDI 访问home object. 客户端和bean 开
发者都不需关心容器和 home object 的实现细节。