users@glassfish.java.net

Re: JTS5041: The resource manager is doing work outside a global transaction

From: sankara rao bhogi <Sankara.Rao_at_Sun.COM>
Date: Tue, 29 Jul 2008 22:07:49 +0530

Transaction has been started, with out that there will not be an attempt
to enlist the connection with the transaction. Please note that this
exception is being thrown from the
com.sybase.jdbc3.jdbc.SybXAResource.start() method. An XAResource.start
is called when the connection is enlisted with the transaction.
A resource manager might thrown an exception, if it finds that the the
connection acquired from the pool already has done some work on the
connection outside the transaction and then there is an attempt to
enlist the connection with the transaction. Different resource managers
might behave differently.

Some of the old data base drivers used to throw this exception in the
following scenario.

1) Connection pool is configured as XA Data Source

method() {

 // get connection from the data source
// do some work
// close th connection
// start transaction
// get connection from the data source : this is where the exception will be
...

}


If if it possible to factor out the test case from the scenario that
would be great.

regards
sankar

glassfish_at_javadesktop.org wrote:
> That's for the response. Sadly, this is not the issue as allow-non-component-callers is already set to true.
>
> I have 3 datasources defined for our application. Below are the entries in domain.xml
>
> <jdbc-connection-pool allow-non-component-callers="true" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.sybase.jdbc3.jdbc.SybXADataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="true" is-isolation-level-guaranteed="false" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="cosmosConnectionPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.XADataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
> <property name="user" value="dbuser"/>
> <property name="password" value="dbpassword"/>
> <property name="BE_AS_JDBC_COMPLIANT_AS_POSSIBLE" value="true"/>
> <property name="IGNORE_DONE_IN_PROC" value="true"/>
> <property name="portNumber" value="2100"/>
> <property name="databaseName" value="ciim"/>
> <property name="APPLICATIONNAME" value="QuoteServer"/>
> <property name="serverName" value="DBSERVER1"/>
> </jdbc-connection-pool>
> <jdbc-connection-pool allow-non-component-callers="true" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.sybase.jdbc3.jdbc.SybXADataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="true" is-isolation-level-guaranteed="false" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="partnerConnectionPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.XADataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
> <property name="user" value="dbuser"/>
> <property name="password" value="dbpassword"/>
> <property name="BE_AS_JDBC_COMPLIANT_AS_POSSIBLE" value="true"/>
> <property name="IGNORE_DONE_IN_PROC" value="true"/>
> <property name="portNumber" value="2100"/>
> <property name="databaseName" value="price"/>
> <property name="APPLICATIONNAME" value="QuoteServer"/>
> <property name="serverName" value="DBSERVER2"/>
> </jdbc-connection-pool>
> <jdbc-connection-pool allow-non-component-callers="true" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.sybase.jdbc3.jdbc.SybXADataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="true" is-isolation-level-guaranteed="false" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="quotingConnectionPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.XADataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
> <property name="user" value="dbuser"/>
> <property name="password" value="dbpassword"/>
> <property name="BE_AS_JDBC_COMPLIANT_AS_POSSIBLE" value="true"/>
> <property name="IGNORE_DONE_IN_PROC" value="true"/>
> <property name="portNumber" value="2100"/>
> <property name="databaseName" value="quoting"/>
> <property name="APPLICATIONNAME" value="QuoteServer"/>
> <property name="serverName" value="DBSERVER3"/>
> </jdbc-connection-pool>
> [Message sent by forum member 'cmathrusse' (cmathrusse)]
>
> http://forums.java.net/jive/thread.jspa?messageID=290116
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: users-help_at_glassfish.dev.java.net
>
>