defaultAutoCommit problem with glassfish

Lists: pgsql-jdbc
From: "Douglas Hammond" <wizhippo(at)gmail(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: defaultAutoCommit problem with glassfish
Date: 2007-07-25 15:02:21
Message-ID: 198625570707250802k5a325718ic805df8201ba020b@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

I have been trying to setup a dataSource in glassfish that needs to
have the defaultAutoCommit = false using
org.postgresql.ds.PGConnectionPoolDataSource.

I am using the postgresql-jdbc-8.3dev-600 driver.

It does not work for me. It seams that glassfish is relying on the
driver to set and retain the defaultAutoCommit state. I do not know
if the driver should retian this or the pool manager should.

Here is what I have done to find that the postgres jdbc driver does
not retain the defaultAutoCommit state for new connections. At least
I think this is what is happening.

Since you can't use org.postgresql.ds.PGConnectionPoolDataSource directly
This is what I did.

<bean id="dsAdapter" destroy-method="close"
class="org.postgresql.ds.PGConnectionPoolDataSource">
<property name="serverName" value="localhost" />
<property name="databaseName" value="jasperserver" />
<property name="portNumber" value="5432" />
<property name="user" value="jasperserver" />
<property name="password" value="xxxx" />
<property name="defaultAutoCommit" value="false" />
</bean>

<bean id="dataSource"
class="org.apache.commons.dbcp.datasources.SharedPoolDataSource">
<property name="connectionPoolDataSource">
<ref local="dsAdapter"></ref>
</property>
<property name="maxActive" value="5" />
<property name="maxIdle" value="4" />
<property name="maxWait" value="10000" />
</bean>

This does NOT work

I thought I would try

<bean id="dsAdapter" destroy-method="close"
class="org.postgresql.ds.PGConnectionPoolDataSource">
<property name="serverName" value="localhost" />
<property name="databaseName" value="jasperserver" />
<property name="portNumber" value="5432" />
<property name="user" value="jasperserver" />
<property name="password" value="hippo" />
</bean>

<bean id="dataSource"
class="org.apache.commons.dbcp.datasources.SharedPoolDataSource">
<property name="connectionPoolDataSource">
<ref local="dsAdapter"></ref>
</property>
<property name="defaultAutoCommit" value="false" />
<property name="maxActive" value="5" />
<property name="maxIdle" value="4" />
<property name="maxWait" value="10000" />
</bean>

I moved the defaultAutoCommit into the
org.apache.commons.dbcp.datasources.SharedPoolDataSource.

It WORKS.

It looks like postgresql jdbc driver is relying on the pool manager to
set or keep the autoCommit state.

I do not know if this is proper behavier or not.

Should this be submitted as a bug?


From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: Douglas Hammond <wizhippo(at)gmail(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: defaultAutoCommit problem with glassfish
Date: 2007-07-25 22:08:38
Message-ID: 46A7C9E6.1090502@opencloud.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

Douglas Hammond wrote:

> <bean id="dsAdapter" destroy-method="close"
> class="org.postgresql.ds.PGConnectionPoolDataSource">

> <property name="defaultAutoCommit" value="false" />

AFAIK there is no javabean accessor on PGConnectionPoolDataSource for a
property named "defaultAutoCommit".

If you try to set some obviously incorrect property
("thisPropertyDoesNotExist"), what happens? The bug may be that whatever
is building the DS from the XML is silently ignoring properties that it
can't find an accessor for, rather than complaining about misconfiguration.

-O


From: "Albe Laurenz" <all(at)adv(dot)magwien(dot)gv(dot)at>
To: "Oliver Jowett *EXTERN*" <oliver(at)opencloud(dot)com>, "Douglas Hammond" <wizhippo(at)gmail(dot)com>
Cc: <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: defaultAutoCommit problem with glassfish
Date: 2007-07-26 07:58:34
Message-ID: AFCCBB403D7E7A4581E48F20AF3E5DB203FCFED5@EXADV1.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

Oliver Jowett wrote:
>> <bean id="dsAdapter" destroy-method="close"
>> class="org.postgresql.ds.PGConnectionPoolDataSource">
>
>> <property name="defaultAutoCommit" value="false" />
>
> AFAIK there is no javabean accessor on
> PGConnectionPoolDataSource for a property named "defaultAutoCommit".

At least in CVS HEAD there is an

org.postgresql.ds.PGConnectionPoolDataSource#setDefaultAutoCommit(boolea
n)

and an

org.postgresql.ds.PGConnectionPoolDataSource#isDefaultAutoCommit()

Yours,
Laurenz Albe


From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: Albe Laurenz <all(at)adv(dot)magwien(dot)gv(dot)at>
Cc: Douglas Hammond <wizhippo(at)gmail(dot)com>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: defaultAutoCommit problem with glassfish
Date: 2007-07-26 08:39:56
Message-ID: 46A85DDC.1060603@opencloud.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

Albe Laurenz wrote:
> Oliver Jowett wrote:
>>> <bean id="dsAdapter" destroy-method="close"
>>> class="org.postgresql.ds.PGConnectionPoolDataSource">
>>> <property name="defaultAutoCommit" value="false" />
>> AFAIK there is no javabean accessor on
>> PGConnectionPoolDataSource for a property named "defaultAutoCommit".
>
> At least in CVS HEAD there is an
>
> org.postgresql.ds.PGConnectionPoolDataSource#setDefaultAutoCommit(boolea
> n)

Oops. Not sure how I missed that the first time around, I did look for
it! Not sure what is going on then.

To the OP: what exactly is the failure that you see when trying to use
the defaultAutoCommit property on the PG datasource?

-O