Что такое EJB 3.0 версия метода ejbCreate - PullRequest
4 голосов
/ 27 октября 2011

Я бы хотел перенести старый EJB 2.1-код в EJB 3.0, но в методе ejbCreate есть некоторая обработка ошибок конфигурации. Существует ли EJB 3-версия этого метода?

Редактировать: в EJB 2.x ejbCreate может выдавать исключение CreateException. Основываясь на документации @PostConstruct и т. Д., Я больше не могу выбрасывать какие-либо проверенные исключения. Как я могу справиться с этим, если я не могу перенести код с помощью EJB прямо сейчас.

Edit2: интерфейс специально обрабатывает CreateException, который, к сожалению, проверен.

Ответы [ 3 ]

8 голосов
/ 27 октября 2011
@PostConstruct
public void anyName() {
    //initialization code, dependencies are already injected
}

Не только имя произвольно, вы можете иметь несколько @PostConstruct методов в одном EJB - однако порядок вызова не указан, поэтому будьте осторожны и старайтесь придерживаться одного метода.ОБНОВЛЕНИЕ:

С помощью этой аннотации можно аннотировать только один метод.

2 голосов
/ 27 октября 2011

Вам необходимо использовать методы обратного вызова жизненного цикла EJB 3.0 с использованием аннотаций

@PostConstruct, @PreDestroy, @PostActivate or @PrePassivate

Эти аннотации могут использоваться для любых методов public, void и no-arg.

0 голосов
/ 28 октября 2011

Если клиент явно обрабатывал CreateException, генерируемое ejbCreate, и вы хотите использовать EJB 3, то вы должны использовать сессионный компонент с состоянием. Исключения из ejbCreate из сессионных компонентов без сохранения состояния не распространяются на клиенты, а объектные компоненты не поддерживают аннотации в 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();
    }
  }
}
...