1. Java / Говнокод #18956

    −49

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    try {
                    eventTask = AliasHelper.getAliasValue(normalSession, AliasHelper.GENERAL_ALIAS_SET, AliasHelper.MSG_NEW_RESOLUTION);
                    ismNS.beginTransaction(); //Начать обе транзакции
                    ismSS.beginTransaction();
                    for (Iterator iter = targetUserNames.iterator(); iter.hasNext(); ) {
                        MailSender.UserData userData = (MailSender.UserData) iter.next();
                        IDfId queueId = getMainDocument().queue(userData.getUserName(), eventTask, 1, false, null, "Отправьте копию генеральному директору.");
                        IDfQueueItem queue = (IDfQueueItem) superSession.getObject(queueId);
                        queue.setString("task_subject", queueMessage);
                        queue.save();
                    }
                } catch (Exception e) {
                    ismNS.setTransactionRollbackOnly();//Откатить изменения обеих транзакций
                    ismSS.setTransactionRollbackOnly();
                    throw new TTGWrapperException(e);
                } finally {
                    try {
                        ismNS.commitTransaction();
                        ismSS.commitTransaction();
                    } catch (DfException e) {
                        throw new TTGWrapperException(e);
                    } finally {
                        ismSS.release(superSession);
                    }
                }

    try в finally чтобы закрыть транзакцию.

    Запостил: Landing, 03 Ноября 2015

    Комментарии (1) RSS

    • А теперь представим, что одна транзакция закоммитится, а вторая выбросит исключение.
      Ответить

    Добавить комментарий