2009-09-09 2 views
2

Я хочу использовать службу Java Transaction для управления распределенными транзакциями в своем приложении Java.Служба транзакций Java

У меня есть 3 разных базы данных, к которым я должен подключиться, используя 3 разных объекта Connection. Я хочу вставить определенные данные в каждую из трех баз данных. Мое требование состоит в том, чтобы атомарность поддерживалась. Поэтому либо данные должны быть вставлены во все 3 базы данных, либо не должны быть вставлены ни в одну из баз данных. Я искал в сети для такого рода транзакций, и я получил услугу Java Transaction. Я мог бы найти его API здесь http://java.sun.com/products/jts/javadoc/index.html Но я все еще не понимаю, как реализовать транзакции, используя его. Может ли кто-нибудь предоставить мне ссылки на образец кода или руководства Java Transaction Service.

Спасибо заранее, Aniket Kedari

ответ

0

тема вам нужно искать на это XA сделки.

Что вам нужно знать хорошо освещено здесь:

http://www.javaworld.com/javaworld/jw-04-2007/jw-04-xa.html

Распределенная обработка транзакций системы предназначены для облегчения сделок, которые охватывают гетерогенный, транзакций знают ресурсы в распределенной среде , Использование распределенных транзакций, приложение может выполнять задачи, такие как извлечение сообщения из сообщения очереди и обновление одного или нескольких баз данных в одном транзакционной блока приставшей к ACID (атомарность, последовательность, изоляция и долговечность) критерии. В данной статье описывается некоторые случаев применения, где распределенные транзакций (XA) может быть использована и как приложение может достичь обработки транзакций с использованием JTA вместе с лучшими из породы технологии. Основное внимание уделяется использованием Spring в качестве серверной структуры и , как можно интегрировать различные реализации JTA для уровня предприятия, распределенного транзакций.

+0

Привет всем, Благодарим вас за ценные предложения. Я попытался использовать XAResource. http://www.datadirect.com/developer/jdbc/topics/jta/dist-trans/index.ssp ​​ Но, к сожалению, мой источник данных для моего databse «hp Non Stop Databse» не поддерживает XAresource. Теперь я буду искать теорему CAP и BASE. – 2009-09-09 10:43:43

0

Для простых ситуаций с использованием одной базы данных вы не беспокоитесь об этом, достаточно сочетания JDBC и собственных возможностей базы данных. Ваша ситуация сложнее. Должен быть диспетчер транзакций, который отслеживает все детали управления распределенными транзакциями по базам данных. Таким образом, вам нужна реализация, предлагающая JTA apis.

Хотя вы могли бы в принципе развить это свое «я», это очень сложная работа, поэтому вам практически нужно использовать существующую реализацию. Это одна из вещей, которые вы получаете, когда используете сервер приложений Java EE.

Итак, идите и получите один из многих доступных серверов приложений Java EE App, есть хорошие нулевые затраты.

WebSphere Community Edition является широко используемым сервером IBM, JBOSS, Glassfish доступен с Sun.

Какой бы вы ни выбрали, убедитесь, что вы используете свои пулы соединений JDBC для своих JDBC-подключений (очень легко сделать), и я бы предложил использовать простой Session Bean (в EJB 3 это тоже очень просто), чтобы разметить ваши транзакции ,

В целом вам нужно написать около 4 новых строк кода (или аннотаций). над тем, что у вас есть сейчас, и «бинго!» вы делаете транзакции 2PC. Существует немного кривая обучения в получении серверов приложений и изучение способов использования этих средств, но если вам нужны распределенные транзакции Java, вам нужны инфраструктурные услуги и инфраструктура для програмирования, поэтому некоторый уровень обучения неизбежен.

3

Некоторые пункты:

  1. XA не является единственно возможным решением для решения этой проблемы, хотя это, вероятно, самый простой из-за зрелости инструментов вокруг него (поиск по теореме CAP и БАЗЫ - В принципе Доступно Soft- состояние В конечном итоге согласовано).
  2. Операции XA имеют режимы отказа, и вы все равно можете получить окна несоответствия между участвующими базами данных.
  3. Вы не указали, какие базы данных вы используете - возможно, один или все из них не поддерживают транзакции XA.
  4. Маловероятно, что вы хотите использовать необработанные API JTS/JTA в Java, вместо этого вы можете использовать любой из известных серверов приложений Java, поскольку они содержат диспетчер транзакций (который использует JTS/JTA).

Итак, предполагая, что вы решили использовать сервер приложений Java, я бы предложил использовать Spring, EJB 3.0 или что-то подобное для взаимодействия с базой данных, поскольку они позволят вам делать декларативные транзакции, которые намного чище, чем ручная запись транзакции логики себя.

Вот link в документации Spring по сделкам.

Смежные вопросы