Thread: JDBC XA Support and Sample code?

JDBC XA Support and Sample code?

From
"Jignesh K. Shah"
Date:
Hello All,

I am new to the XA world of PostgreSQL. What's the story of XA in
PostgreSQL JDBC Driver? Also are there examples on how to use the
"Experimental" XA driver in postgresql-jdbc?

Thanks.
Regards,
Jignesh


Re: JDBC XA Support and Sample code?

From
Kris Jurka
Date:

On Wed, 5 Dec 2007, Jignesh K. Shah wrote:

> I am new to the XA world of PostgreSQL. What's the story of XA in PostgreSQL
> JDBC Driver? Also are there examples on how to use the "Experimental" XA
> driver in postgresql-jdbc?
>

PG's XA support is not expiremental, it's been part of the driver since
the 8.1 release.  How it's used depends a lot on who/what is managing your
transactions, so it's not real straightforward to put together concrete
examples and configurations.  The JDBC driver's testsuite
(org.postgresql.test.xa) manually issues xa transaction commands, so it's
the most clear use of XA, but not really representative of actual usage.

Kris Jurka

Re: JDBC XA Support and Sample code?

From
"Jignesh K. Shah"
Date:
So how come the API documentation for it is in privateapi and not
publicapi.. That prompted me to infer that it is experimental. (I may
not be alone in drawing that inference from it.)

Thanks for pointer to the testsuite I will take a look at it.

-Jignesh


Kris Jurka wrote:
>
>
> On Wed, 5 Dec 2007, Jignesh K. Shah wrote:
>
>> I am new to the XA world of PostgreSQL. What's the story of XA in
>> PostgreSQL JDBC Driver? Also are there examples on how to use the
>> "Experimental" XA driver in postgresql-jdbc?
>>
>
> PG's XA support is not expiremental, it's been part of the driver
> since the 8.1 release.  How it's used depends a lot on who/what is
> managing your transactions, so it's not real straightforward to put
> together concrete examples and configurations.  The JDBC driver's
> testsuite (org.postgresql.test.xa) manually issues xa transaction
> commands, so it's the most clear use of XA, but not really
> representative of actual usage.
>
> Kris Jurka

Re: JDBC XA Support and Sample code?

From
Kris Jurka
Date:

On Wed, 5 Dec 2007, Jignesh K. Shah wrote:

> So how come the API documentation for it is in privateapi and not publicapi..
> That prompted me to infer that it is experimental. (I may not be alone in
> drawing that inference from it.)

The driver just implements the standard interfaces in J2SE, so there's
nothing that really needs to be exposed from an API standpoint.
PGXADataSource should be moved to the public API, but it's unlikely for
people to call it directly.

Kris Jurka

Re: JDBC XA Support and Sample code?

From
Heikki Linnakangas
Date:
Jignesh K. Shah wrote:
> I am new to the XA world of PostgreSQL. What's the story of XA in
> PostgreSQL JDBC Driver? Also are there examples on how to use the
> "Experimental" XA driver in postgresql-jdbc?

As Kris pointed out, it's not experimental.

It's typically used together with an application server that also acts
as the transaction manager, and manages the connections and transactions
for you. In that case, you don't need to do anything special; if you use
two database connections or other resource managers in a transaction,
the application server will perform two-phase commit using the XA driver
behind the scenes.

The tricky part is configuring the application server/transaction
manager to use the XA-enabled PGXADataSource. That's different on each
product. It would be nice to get a sample config file and tutorial on
Glassfish, hint hint ;-)

--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

Re: JDBC XA Support and Sample code?

From
"Garber, Mikhail"
Date:
> It's typically used together with an application server that
> also acts as the transaction manager, and manages the
> connections and transactions for you. In that case, you don't
> need to do anything special; if you use two database
> connections or other resource managers in a transaction, the
> application server will perform two-phase commit using the XA
> driver behind the scenes.



Just FYI, I used Postgres XA driver against two databases using Spring and BTM transaction manager. My configuration
wasbased on what is in BTM documentation. It worked just fine. I was not able to "break" it. 


> -----Original Message-----
> From: pgsql-jdbc-owner@postgresql.org
> [mailto:pgsql-jdbc-owner@postgresql.org] On Behalf Of Heikki
> Linnakangas
> Sent: Thursday, December 06, 2007 9:55 AM
> To: Jignesh K. Shah
> Cc: pgsql-jdbc@postgresql.org
> Subject: Re: [JDBC] JDBC XA Support and Sample code?
>
> Jignesh K. Shah wrote:
> > I am new to the XA world of PostgreSQL. What's the story of XA in
> > PostgreSQL JDBC Driver? Also are there examples on how to use the
> > "Experimental" XA driver in postgresql-jdbc?
>
> As Kris pointed out, it's not experimental.
>
> It's typically used together with an application server that
> also acts as the transaction manager, and manages the
> connections and transactions for you. In that case, you don't
> need to do anything special; if you use two database
> connections or other resource managers in a transaction, the
> application server will perform two-phase commit using the XA
> driver behind the scenes.
>
> The tricky part is configuring the application
> server/transaction manager to use the XA-enabled
> PGXADataSource. That's different on each product. It would be
> nice to get a sample config file and tutorial on Glassfish,
> hint hint ;-)
>
> --
>    Heikki Linnakangas
>    EnterpriseDB   http://www.enterprisedb.com
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
>        subscribe-nomail command to majordomo@postgresql.org
> so that your
>        message can get through to the mailing list cleanly
>

Re: JDBC XA Support and Sample code?

From
Kris Jurka
Date:

On Wed, 5 Dec 2007, Jignesh K. Shah wrote:

> So how come the API documentation for it is in privateapi and not publicapi..
> That prompted me to infer that it is experimental. (I may not be alone in
> drawing that inference from it.)
>

OK, I've moved PGXADataSource to the public API.  Will be in the next site
build.

Kris Jurka