Stateful EJB Lifecycle вопрос - PullRequest
0 голосов
/ 30 июня 2011

У меня есть следующая декларация bean-компонента:

@Stateful
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class InteruptBean implements Interrupt {

private boolean interrupt = false;

@Override
public boolean check() {
    return interrupt;
}

@Override
public void interrupt() {
    interrupt = true;
}
}

Я пытаюсь понять Stateful EJB Lifecycle. Как только состояние этого EJB-компонента постоянно изменяется с использованием метода interrupt (), и все ссылки на этот экземпляр устанавливаются в значение null, экземпляр компонента возвращается в соответствующий пул или отбрасывается?

Что вызывает у меня сомнения, так это TransactionAttributeType.NOT_SUPPORTED. Я надеюсь, что спецификация контейнера где-то говорит, что Stateful EJB каким-то образом сбрасывается в исходное состояние перед повторным использованием, независимо от того, что такое TransactionAttributeType.

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 июня 2011

@ cj91

Я не уверен, что СПЕК конкретно говорит то, что вы спрашиваете, т. Е.

Я надеюсь, что спецификация контейнера где-то говорит, что Stateful EJBсбросить каким-либо образом исходное состояние перед повторным использованием, независимо от того, что представляет собой TransactionAttributeType.

Но я почти уверен, что тип атрибута транзакции не влияет на состояние EJB с состоянием (повторно)initialized.

NOT_SUPPORTED просто означает, что метод не может быть вызван из контекста транзакции.Если он вызывается, он игнорируется.

См.

http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Transaction3.html

1 голос
/ 30 июня 2011

Чтение http://download.oracle.com/javaee/6/tutorial/doc/giplj.html#gipln.

В конце жизненного цикла клиент вызывает аннотированный метод @Remove, а контейнер EJB вызывает аннотированный метод @PreDestroy, если таковой имеется. Экземпляр компонента готов к сборке мусора.

Если никто не вызывает метод @Remove, контейнер будет ждать до истечения времени ожидания и удалит его.

Аннотация @TransactionAttribute не имеет ничего общего с жизненным циклом компонента. Он только сообщает контейнеру, когда и когда должна быть запущена транзакция, когда вызывается один из его бизнес-методов.

...