Thread: defaultAutoCommit problem with glassfish
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?
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
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
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