JTA Transaction and CUrrent Session
we have following problem. configured hibernate jta , when execute simple code performs hibernate queries following error:
"org.hibernate.lazyinitializationexception: not initialize proxy - owning session closed"
we discovered if leave session opened error disapears, on long run crashes server throwing jdbc connection error.
we tried use getcurrentsession() instead of opening session manualy in case following error:
"org.hibernate.hibernateexception : unable locate current usertransaction"
this quite strange because current session should bound current user transaction , seems our hibernate cfg file ok.
i´am posting part of hibernate cfg file , code execute.
hibernate.cfg.xml
<hibernate-configuration>
<session-factory name="java:/hibernate/sessionfactory">
<property name="hibernate.connection.datasource">java:fiap</property>
<property name="hibernate.dialect">org.hibernate.dialect.postgresqldialect</property>
<!-- enable hibernate's automatic session context management -->
<property name="hibernate.current_session_context_class">jta</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.jtatransactionfactor y</property>
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.jbosstransact ionmanagerlookup</property>
<property name="jta.usertransaction">java:comp/usertransaction</property>
<!-- <property name="connection.release_mode">after_statement</property> -->
<!-- <property name="hibernate.transaction.flush_before_completion">true</property>-->
<property name="hibernate.transaction.auto_close_session">true</property>
.......
......
and java code:
.....
try {
tx = hutil.gettx(); //jndi lookup
tx.begin();
session = hutil.getsessionfactory().getcurrentsession(); //jndi lookup
//session = hutil.getsessionfactory().opensession();
query query = session.createquery("from persona username = ?");
query.setstring(0, username);
persona = (persona) query.uniqueresult();
query = session.createquery("from festival id = ?");
query.setinteger(0, idfestival);
festival = (festival) query.uniqueresult();
if (persona != null && festival != null) {
query = session.createquery("from inscripcion inscribea = :persona " +
"and inscriptosen = :festival");
query.setparameter("persona", persona);
query.setparameter("festival", festival);
inscripcion = (inscripcion) query.uniqueresult();
........
}
.......
return inscripcion;
} catch (exception e) {
e.printstacktrace();
throw e;
} {
tx.commit();
//session.close();
}
thanks
"org.hibernate.lazyinitializationexception: not initialize proxy - owning session closed"
we discovered if leave session opened error disapears, on long run crashes server throwing jdbc connection error.
we tried use getcurrentsession() instead of opening session manualy in case following error:
"org.hibernate.hibernateexception : unable locate current usertransaction"
this quite strange because current session should bound current user transaction , seems our hibernate cfg file ok.
i´am posting part of hibernate cfg file , code execute.
hibernate.cfg.xml
<hibernate-configuration>
<session-factory name="java:/hibernate/sessionfactory">
<property name="hibernate.connection.datasource">java:fiap</property>
<property name="hibernate.dialect">org.hibernate.dialect.postgresqldialect</property>
<!-- enable hibernate's automatic session context management -->
<property name="hibernate.current_session_context_class">jta</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.jtatransactionfactor y</property>
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.jbosstransact ionmanagerlookup</property>
<property name="jta.usertransaction">java:comp/usertransaction</property>
<!-- <property name="connection.release_mode">after_statement</property> -->
<!-- <property name="hibernate.transaction.flush_before_completion">true</property>-->
<property name="hibernate.transaction.auto_close_session">true</property>
.......
......
and java code:
.....
try {
tx = hutil.gettx(); //jndi lookup
tx.begin();
session = hutil.getsessionfactory().getcurrentsession(); //jndi lookup
//session = hutil.getsessionfactory().opensession();
query query = session.createquery("from persona username = ?");
query.setstring(0, username);
persona = (persona) query.uniqueresult();
query = session.createquery("from festival id = ?");
query.setinteger(0, idfestival);
festival = (festival) query.uniqueresult();
if (persona != null && festival != null) {
query = session.createquery("from inscripcion inscribea = :persona " +
"and inscriptosen = :festival");
query.setparameter("persona", persona);
query.setparameter("festival", festival);
inscripcion = (inscripcion) query.uniqueresult();
........
}
.......
return inscripcion;
} catch (exception e) {
e.printstacktrace();
throw e;
} {
tx.commit();
//session.close();
}
thanks
More discussions in LiveCycle Data Services
adobe
Comments
Post a Comment