I've experience the same problem. The "ExceptionSorter" class is supposed to do the right thing (remove the connection) but it doesn't seem to do the right thing in the circumstance you mention.
I'll try this, hope it will help.
We have experienced the same problem with mysql. I was about to start using the jakarta DBCP database connection pool when I found an undocumented property that can be used with the ManagedConnectionFactoryProperties. The parameter is named CheckValidConnectionSQL and it allows you to specify a sql query to be executed to check if the connection is still ok.
<config-property name="CheckValidConnectionSQL" type="java.lang.String">select 1</config-property>
This parameter is not documented anywhere although it is available with Jboss 3.0.7 and Jboss 3.2.2. I don't know why.
I'd interested in knowing whether it solves your problem with Oracle.
I meet the same problem in MSSQL 2000 on JBoss 3.0.7.
But sometimes it can recover.I don't know what happend.