[
http://jira.jboss.com/jira/browse/JBAS-4176?page=comments#action_12413636 ]
Jeff Zhang commented on JBAS-4176:
----------------------------------
Hi Adrian,
I would like to change code with:
try
{
connection = cl.getManagedConnection().getConnection(subject, cri);
}
catch (Throwable t)
{
try {
//here we catch the exceptions
managedConnectionDisconnected(cl);
}
catch (ResourceException re)
{
//just log the exception
log.trace("Get exception from managedConnectionDisconnected, maybe
delist() have problem" + re);
returnManagedConnection(cl, true);
}
//keep original error and throw
JBossResourceException.rethrowAsResourceException(
"Unchecked throwable in ManagedConnection.getConnection() cl=" +
cl, t);
}
do you think it works?
Thanks
Jeff
Error in delist masks the real error creating the connection handle
in BaseConnectionManager2
---------------------------------------------------------------------------------------------
Key: JBAS-4176
URL:
http://jira.jboss.com/jira/browse/JBAS-4176
Project: JBoss Application Server
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: JCA service
Reporter: Adrian Brock
Assigned To: Jeff Zhang
Fix For: JBossAS-4.2.3.GA
There is a problem with the error reporting in
BaseConnectionManager2.allocationConnection().
When it can't get a connection handle, it invokes managedConnectionDisconnected() to
make sure any work already done is undone, e.g. delist the resource and return to the
pool.
The problem is that an error thrown from managedConnectionDisconnected()
will be given to the user rather than the original error thrown when getting the handle.
// Ask the managed connection for a connection
Object connection = null;
try
{
connection = cl.getManagedConnection().getConnection(subject, cri);
}
catch (Throwable t)
{
// HERE: Error from this method
managedConnectionDisconnected(cl);
// Means this original error is not thrown
JBossResourceException.rethrowAsResourceException(
"Unchecked throwable in ManagedConnection.getConnection() cl=" +
cl, t);
}
In fact, if we do get an error asking for a handle, we should probably just quietly (no
logging above DEBUG)
destroy the connection and then rethrow the original error.
i.e.
catch (Throwable t)
{
// HERE: Destroy the connection
returnManagedConnection(cl, true);
JBossResourceException.rethrowAsResourceException(
"Unchecked throwable in ManagedConnection.getConnection() cl=" +
cl, t);
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira