For accessing Oracle 12c RAC database by JDBC to ensure high availability, should I use TAF or FCF? The case I encounter is that if one of the database on RAC array is suddenly down, the transaction is rolled back and connections between JBoss and Database are broken. 

What I want is to preserve the JDBC connections and redirect them to another oracle database on the array. Also, can transactions preserved? 

In this case, should I use TAF or FCF? 

Besides, if TAF is suggested to be used, is it true that thick driver has to be used in JBoss?
In this case, should I use TAF or FCF?


TAF- Transparent Application Failover is a database session-level connection failover mechanism and works only for OCI clients. 

FCF- Fast Connection Failover is a application-level failover mechanism. It depends on the implicit connection cache feature and implicit connection caching must be enabled. 

TAF would be very useful for long running sessions whereas FCF is useful for pooled connections. 


  What I want is to preserve the JDBC connections and redirect them to another oracle database on the array. Also, can transactions preserved?


TAF will fail over standard SQL SELECT statements that have been caught during a node crash in an in-flight transaction failure. Transactions involving INSERT, UPDATE, or DELETE statements are not supported by TAF. 


  Besides, if TAF is suggested to be used, is it true that thick driver has to be used in JBoss?


Yes.

Reference:
Client Failover Best Practices - Oracle
Understanding How Fast Connection Failover Works
Comparison of TAF and Fast Connection Failover