Ich habe Probleme beim Festlegen des Transaktions-Timeout für den Ruhezustand auf Orakel. Es funktioniert nicht. Kann jemand helfen? Das "SaveOrUpdate" kehrt nicht innerhalb der angegebenen 10 Sekunden zurück. Es wird sehr lange hängen bleiben. Ich verwende Oracle 10r2.Transaktionszeitüberschreitung funktioniert nicht mit Orakel im Ruhezustand
Hibernate-Konfigurationsdatei
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@9.9.9.9:1521:orcl</property>
<property name="connection.username">foouser</property>
<property name="connection.password">foopass</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">false</property>
<!-- Mapping files -->
<mapping resource="foo.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Hibernate Klasse
public class foo implements Serializable
{
...
public void save() throws Exception
{
Session dbSession = null;
Transaction tran = null;
try
{
dbSession = PersistenceMgr.getPersistenceMgr().getDbSession();
tran = dbSession.beginTransaction();
tran.setTimeout(10); // 10 seconds
dbSession.saveOrUpdate(this);
tran.commit();
}
catch (HibernateException e)
{
if(tran!=null)
{
try{tran.rollback();}
catch(HibernateException he){}
}
...
}
finally
{
if(dbSession != null)
{
try{dbSession.close();}
catch(HibernateException e){}
}
}
}
}
Leider der späte Antwort. Ich wurde herausgezogen, um an einer anderen Aufgabe zu arbeiten. Ich probierte aus wie Sie vorschlagen. Leider funktioniert die Timeout-Einstellung nicht für die Methode "saveOrUpdate". Die Timeout-Einstellung funktioniert für "Select for update". Ich bin verwirrt, warum es auf diese Art und Weise verhält. – chinhw