我想将一些旧的 EJB 2.1 代码迁移到 EJB 3.0,但是在 ejbCreate 方法中有一些配置错误的处理。是否有该方法的 EJB 3 版本?
编辑:在 EJB 2.x 中,ejbCreate 可能会抛出 CreateException。基于@PostConstruct 等的文档。我不能再抛出任何已检查的异常。如果我现在无法使用 EJB 迁移代码,我该如何处理。
Edit2:前端专门处理 CreateException,不幸的是,它被检查了。
我想将一些旧的 EJB 2.1 代码迁移到 EJB 3.0,但是在 ejbCreate 方法中有一些配置错误的处理。是否有该方法的 EJB 3 版本?
编辑:在 EJB 2.x 中,ejbCreate 可能会抛出 CreateException。基于@PostConstruct 等的文档。我不能再抛出任何已检查的异常。如果我现在无法使用 EJB 迁移代码,我该如何处理。
Edit2:前端专门处理 CreateException,不幸的是,它被检查了。
@PostConstruct
public void anyName() {
//initialization code, dependencies are already injected
}
不仅名称是任意的,您还可以更新:@PostConstruct
在一个 EJB 中拥有多个方法 - 但是调用的顺序是未指定的,因此请小心并尝试坚持使用一种方法。
此注解只能注解一种方法。
您需要使用使用注解的 EJB 3.0 生命周期回调方法
@PostConstruct, @PreDestroy, @PostActivate or @PrePassivate
这些注释可以用于任何公开、无效和无参数的方法。
如果客户端显式处理 ejbCreate 抛出的 CreateException 并且您想使用 EJB 3,那么您必须使用有状态会话 bean。来自无状态会话 bean 的 ejbCreate 异常不会传播到客户端,并且实体 bean 不支持 EJB 3 中的注释。在这种情况下,您需要 @Init 注释:
public interface MyHome extends EJBLocalHome {
public MyInterface create(int arg) throws CreateException;
}
@Stateful
@LocalHome(MyHome.class)
public class MyBean {
@Init
public void init(int arg) throws CreateException {
if (arg < 0) {
throw new CreateException();
}
}
}