Transaksjonen timeout ikke jobber med dvale med orakel

stemmer
2

Jeg har problem å sette transaksjonen timeout for dvalemodus på orakel. Det betyr ikke work.Can noen hjelpe? Den SaveOrUpdate vil ikke tilbake innen de angitte 10 sekunder. Det vil henge i svært lang tid. Jeg bruker Oracle 10r2.

Hibernate konfigurasjonsfil

<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){}
            }
        }
    }

}
Publisert på 11/03/2009 klokken 13:28
kilden bruker
På andre språk...                            


3 svar

stemmer
3

Den timeout må settes før transaksjonen er startet.

i stedet for

tran = dbSession.beginTransaction();
tran.setTimeout(10);// 10 seconds

prøve

tran = dbSession.getTransaction();
tran.setTimeout(10);
tran.begin();
Svarte 19/03/2009 kl. 20:19
kilden bruker

stemmer
0

Du kan se at på: http://community.jboss.org/wiki/TransactionTimeout .

Svarte 06/01/2010 kl. 13:59
kilden bruker

stemmer
0

Er dette med JTA? Hvis ikke, JDBC seg selv har ingen API for å sette en transaksjon timeout så i stedet Hibernate forsøk på å håndtere det ved å spore hvor mye av den angitte tidsavbruddsperioden forblir ved utførelse JDBC erklæringen innenfor transaksjonen og sette Statement.setQueryTimeout. Det kan være at det er enten en feil i den logikken eller at Oracle JDBC driver har en feil med hensyn til å sette uttalelse timeout.

Hvis du synes det er en Hibernate bug, https://hibernate.onjira.com

Svarte 03/06/2012 kl. 11:53
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more