什么是方法ejbCreate的EJB 3.0版本

时间:2011-10-27 19:04:10

标签: java java-ee ejb-3.0 ejb-2.x

我想将一些旧的EJB 2.1代码迁移到EJB 3.0,但是在ejbCreate方法中有一些配置错误的处理。是否有该方法的EJB 3版本?

编辑:在EJB 2.x中,ejbCreate可能抛出CreateException。基于@PostConstruct等的文档,我不能再抛出任何已检查的异常。如果我现在无法使用EJB迁移代码,我该如何处理呢?

Edit2:前端专门处理CreateException,遗憾的是它被检查。

3 个答案:

答案 0 :(得分:7)

@PostConstruct
public void anyName() {
    //initialization code, dependencies are already injected
}

不仅名称是任意的,您可以在一个EJB中使用多个@PostConstruct方法 - 但是未指定调用顺序,因此请小心并尝试使用一种方法。 UPDATE:

  

此注释只能注释一种方法。

答案 1 :(得分:2)

您需要使用注释

来使用EJB 3.0生命周期回调方法
@PostConstruct, @PreDestroy, @PostActivate or @PrePassivate

这些注释可以用于任何public,void和no-arg方法。

答案 2 :(得分:0)

如果客户端显式处理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();
    }
  }
}