Могу ли я повторно использовать экземпляр UserTransaction после commit ()? - PullRequest
4 голосов
/ 23 ноября 2010


Правильно ли повторное использование экземпляра ut в следующем коде?

UserTransaction ut = (UserTransaction)ctx.lookup("java:comp/UserTransaction");  
ut.begin();  
doSomeWork();  
ut.commit();//Or rollback (I think it doesn't matter)  
ut.begin();   //Or rollback (I think it doesn't matter)  
doOtherWork();  
ut.commit();  

Когда ресурс JNDI определен так:

Reference atomikosUserTransactionFactoryDS = new Reference("com.atomikos.icatch.jta.UserTransactionImp", 
                "com.atomikos.icatch.jta.UserTransactionFactory", null);
atomikosUserTransactionFactoryDS.add(new RefAddr("name") {  
public Object getContent() {  
        return "UserTransaction";  
}});  
atomikosUserTransactionFactoryDS.add(new RefAddr("type") {  
    public Object getContent() {  
    return "com.atomikos.icatch.jta.UserTransactionImp";  
}});  
initContext.rebind("java:comp/UserTransaction", atomikosUserTransactionFactoryDS);

В чем я не уверен, так это в том, нужно ли мне добавить другой поиск и получить новую транзакцию UserTransaction изфабрика, прежде чем начать новую UserTransaction?

Я не думаю, что это уместно, но, как говорится в определении ресурса, я использую Atomikos в качестве менеджера транзакций (и поэтому он фабричный, как фабричный).

Спасибо,
Итай

1 Ответ

3 голосов
/ 23 ноября 2010

повторное использование в порядке.

UserTransaction не представляет конкретный экземпляр транзакции, а предоставляет способ управления контекстом транзакции текущего потока. Думайте об этом как о одиночке, если хотите. UserTransaction обычно не имеет состояния.

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

Если вы спящий человек, подумайте о SessionFactory и Session.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...