фиксация нескольких соединений во время транзакции - PullRequest
0 голосов
/ 26 июля 2010

Могу ли я создать несколько соединений во время одной транзакции и выполнить фиксацию на них, если соединение берется из источника данных в weblogic.???пожалуйста помогите

Ответы [ 2 ]

1 голос
/ 26 июля 2010

Вы имеете в виду из другого источника данных?

Конечно, вы можете.Вот для чего нужен JTA.

Просто убедитесь, что драйверы задействованных источников данных XA-awared.


Отредактировано Я понял, что вы имеете в виду.развитый имеет такую ​​особенность.Предположим, у вас есть некоторая базовая структура управления потоком или обработчик для вашей подпрограммы обработки запросов, вы всегда можете запустить новую транзакцию только для части обработки ошибок, зафиксировать это новое изменение и откатить оригинальное.Декларативное управление транзакциями, вам необходимо объявить транзакцию вокруг процедуры обработки ошибок с политикой распространения REQUIRES_NEW

0 голосов
/ 27 июля 2010

Исходя из комментария, который вы хотите, по сути, автономной транзакции для регистрации сбоя, вы можете либо использовать второе соединение из вашего источника данных и зафиксировать это при откате исходного неудачного (который не требует XA; формулировка в вашем вопросе предполагает, что вы хотите зафиксировать оба соединения одновременно); или если вы можете использовать фактическую автономную транзакцию для обработки регистрации внутри исходного соединения перед откатом. Это, вероятно, проще и чище, особенно если ваша ошибка действительно вызвана вызовом пакета в любом случае, так как его можно устранить по мере возникновения ошибки, а не заставлять клиента беспокоиться об этом. В общих чертах:

PROCEDURE log_failure(...)
IS
    PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    insert ...
    commit;
END log_failure;
...