Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

pdf / 2-JDBC

.pdf
Скачиваний:
22
Добавлен:
06.06.2015
Размер:
321.39 Кб
Скачать

Переиспользование PreparedStatement

ConnectionPoolDataSource

Distributed Transactions

Distributed transaction infrastructure

Transaction managers and resource managers

The XADataSource, XAConnection, and XAResource interfaces

Two-phase commit

public interface XAConnection extends PooledConnection

{

javax.transaction.xa.XAResource getXAResource() throws SQLException;

}

public interface XADataSource

{

XAConnection getXAConnection() throws SQLException; XAConnection getXAConnection(String user,

String password) throws SQLException;

………….

}

XAResource контракт между Resource Manager и Transaction Manager

Two-phase Commit

1. The application server gets XAResource objects from two different connections:

//XAConA connects to resource manager A javax.transaction.xa.XAResource resourceA = XAConA.getXAResource();

//XAConB connects to resource manager B javax.transaction.xa.XAResource resourceB = XAConB.getXAResource();

2.Сервер передает resourceA, resourceB в менеджер транзакций

3.МТ создает транзакцию (xid) и связывает с ней resourceA, resourceB

// Send work to resource manager A. The TMNOFLAGS argument indicates // we are starting a new branch of the transaction, not joining or

// resuming an existing branch.

resourceA.start(xid, javax.transaction.xa.TMNOFLAGS);

//do work with resource manager A

...

//tell resource manager A that it’s done, and no errors have occurred resourceA.end(xid, javax.transaction.xa.TMSUCCESS);

// do work with resource manager B.

resourceB.start(xid, javax.transaction.xa.TMNOFLAGS);

// B’s part of the distributed transaction

...

resourceB.end(xid, javax.transaction.xa.TMSUCCESS);

4. ТМ начинает two-phase commit

//A participating resource manager can vote to roll back the transaction by //throwing a javax.transaction.xa.XAException.

resourceA.prepare(xid);

resourceB.prepare(xid);

5. ТМ осуществляет commit or rollback

//the second parameter tells the resource manager not to use //a one phase commit protocol on behalf of the xid resourceA.commit(xid, false);

resourceB.commit(xid, false);

Соседние файлы в папке pdf