2012-02-13 5 views
0

В настоящее время я работаю с EBJ 3 и должен сделать bean-компонент, который должен выполнять большую бизнес-операцию, состоящую из сохраняющихся данных в DB, ​​отправки некоторых сообщений JMS и сохранения некоторых других данных в LDAP , Я должен сделать эту операцию ACID, так что это не проблема с сохранением данных в БД или отправкой сообщений в JMS (вся эта операция поддерживает распространение транзакций). Но в настоящее время я придерживаюсь сохраняющихся данных в LDAP. Есть ли какой-либо метод, который может решить мою проблему? Мы используем UnboundId LDAP SDK, который supports LDAP transactins, но я предполагаю, что я не могу распространять эту транзакцию на свой bean-компонент. Итак, каково наилучшее решение в этом случае? Должен ли я писать код JTA или JTS? Или есть какое-то простое решение? Или это даже возможно решить эту проблему - возможно, мне нужна возможность 2PC в транзакции LDAP?Распространение транзакций EJB 3 и UnboundId LDAP SDK

ответ

1

Стандартное средство транзакций LDAP, как описано в RFC 5805, не предоставляет возможности включать внешние события как часть вашей транзакции (а также не так много серверов каталогов, которые поддерживают транзакции LDAP - я знаю, что UnboundID Directory Server, а сервер с внутренней памятью предоставлен как часть SDK UnboundID LDAP, но я не знаю других, которые делают).

Если вам нужна возможность фиксировать сервер каталогов LDAP и один или несколько других репозиториев в атомном режиме, тогда нет стандартного решения LDAP, которое может вместить это, поэтому вам понадобится проприетарное решение и вероятно, вам потребуется написать свой собственный код, который будет работать на сервере LDAP.

+0

Спасибо за ответ. Я думал, что это почти невозможно (кроме методов взлома) ... Извините, но я не могу увеличить вашу репутацию (недостаточно репо или что-то). :) – gkuzmin