Я использую транзакцию XA (2 фазы). Я хочу войти в одну таблицу журналов через класс журнала и Entity Manager. Мой метод внутри EJB Session Bean выглядит следующим образом:ejb3 изолированный (автономный) транзакция внутри сеанса bean
private void logError(Throwable throwable) {
LogEntity logEntity = new LogEntity();
// Set everything
entityManager.persist(logEntity);
}
Я хочу это в изолированной (автономной) сделки независимо от какой-либо «внешней» сделки. Я уже пытался добавить @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW)
и @TransactionAttribute(value = TransactionAttributeType.NOT_SUPPORTED)
перед именем метода и не работает.
Перед тем, как вызвать метод EJB3 создать транзакцию пользователя, как:
try {
UserTransaction transaction = (UserTransaction)context.lookup("javax.transaction.UserTransaction");
transaction.begin();
// Call EJB3 method
transaction.commit();
} catch (Throwable t) {
t.printStackTrace();
try {
transaction.rollback();
} catch (SystemException e) {
e.printStackTrace();
}
}
Я хочу Вход не имеет значения, если совершить это делается или нет. Как?
С уважением
Да. Но в методе logError я хочу «зафиксировать» данные независимо от того, совершает ли пользователь (из транзакции XA) или откатывает все. Я пробовал это, но не работает ... Внутри logError я сохраняю() и после этого flush(). Но без везения. 10x – zmeda