要使 CustomerTaskImpl 成为会话 Bean,请添加 @Stateless 注释,如图 51 所示。这可使您的 POJO 成为无状态会话 Bean。
图 51. 无状态注释
EJB 3.0 容器还是一个注入服务器。要具有持久操作,您需要一个实体管理器。这可以通过注入轻松地添加到该会话 Bean 中。当在 EJB 3.0 容器中使用 JPA 时,该容器会自动管理,为您传递正确的持久上下文。这就是所谓的容器管理的实体管理器。通过使用此样式的 JPA,EJB 3.0 容器将正确地管理持久上下文的生命周期,并跨 EJB 调用传播正确的上下文。
将以下所示的 EntityManager 声明添加到 CustomerTaskImpl 类中。
@PersistenceContext(name="OrderDB")
EntityManager em;
您可以使用代码辅助功能引入 PersistenceContext 导入(图 52)。
图 52. PersistenceContext 注释
将此代码片段添加到 findCustomer 方法中:
Customer customer = (Customer) em.find(Customer.class, customerId);
if (customer == null) {
throw new CustomerDoesNotExist("Customer does not exist");
}
return customer;
如前所述组织导入(图 53),然后保存并关闭该文件。
图 53. 客户实现