I am trying to have Jboss (4.2.2) and hibernate work together with JTA. I
deploy my hibernate classes via a .har file. I've seen this issue mentioned in
some threads, but never resolved. I feel like I am just missing a simple
setting or something. Any help would be appreciated.
I have great success using the following:
ctx = new InitialContext();
factory = (SessionFactory)ctx.lookup("java:/hibernate/SessionFactory");
Session hSess = factory.openSession();
Transaction tx = hSess.beginTransaction();
But I cannot get the following to work:
Session hSess = factory.getCurrentSession();
The error thrown is:
org.hibernate.HibernateException: Unable to locate current JTA transaction at
org.hibernate.context.JTASessionContext.currentSession(JTASessionContext.java:61)
at
org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:544)
at test.TestServlet.processRequest(TestServlet.java:57) at
test.TestServlet.doGet(TestServlet.java:129) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.Standar!
dWrapperValve.invoke(StandardWrapperValve.java:230) at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at
org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:393) at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:!
844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandle
r.process(Http11Protocol.java:583) at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) at
java.lang.Thread.run(Thread.java:595)
Obvously no transaction is obtained from the TransactionManager, but why? I
thought that was the point of the method call to deal with opening the session
for you.
I have the following properties setup.
| <mbean code="org.jboss.hibernate.jmx.Hibernate"
name="jboss.har:service=Hibernate">
| <depends>jboss:service=Naming</depends>
| <depends>jboss:service=TransactionManager</depends>
| <attribute name="DatasourceName">java:/MyDS</attribute>
| <attribute
name="Dialect">org.hibernate.dialect.Oracle9Dialect</attribute>
| <attribute
name="SessionFactoryName">java:/hibernate/SessionFactory</attribute>
| <attribute name="Password">xxx</attribute>
| <attribute name="Username">xxx</attribute>
| <attribute
name="CacheProviderClass">org.hibernate.cache.NoCacheProvider</attribute>
| <attribute name="QueryCacheEnabled">false</attribute>
| <attribute name="MinimalPutsEnabled">false</attribute>
| <attribute name="MaxFetchDepth">3</attribute>
| <attribute name="ShowSqlEnabled">true</attribute>
| </mbean>
|
| hibernate.cfg.xml (i don't think this is actually needed):
| <hibernate-configuration>
| <session-factory>
| <property name="current_session_context_class">jta</property>
| <property
name="transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
| <property
name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
| </session-factory>
| </hibernate-configuration>
|
| datasource config:
| <xa-datasource>
| <jndi-name>MyDS</jndi-name>
| <track-connection-by-tx/>
| <isSameRM-override-value>false</isSameRM-override-value>
|
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
| <xa-datasource-property
name="URL">jdbc:oracle:oci8:@db</xa-datasource-property>
| <!-- Uses the pingDatabase method to check a connection is still valid
before handing it out from the pool -->
|
<!--valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name-->
|
| <!-- Oracles XA datasource cannot reuse a connection outside a
transaction once enlisted in a global transaction and vice-versa -->
| <no-tx-separate-pools/>
|
| <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml
(optional) -->
| <metadata>
| <type-mapping>Oracle9i</type-mapping>
| </metadata>
| </xa-datasource>
|
Hibernate log after server starts reads ok by my interpretation:
2007-12-03 16:44:41,580 INFO [org.hibernate.cfg.Environment] Hibernate
3.2.4.sp1
2007-12-03 16:44:41,595 INFO [org.hibernate.cfg.Environment]
hibernate.properties not found
2007-12-03 16:44:41,595 INFO [org.hibernate.cfg.Environment] Bytecode provider
name : javassist
2007-12-03 16:44:41,611 INFO [org.hibernate.cfg.Environment] using JDK 1.4
java.sql.Timestamp handling
2007-12-03 16:44:41,705 INFO [org.hibernate.cfg.Configuration] Searching for
mapping documents in jar: my.har
2007-12-03 16:44:41,720 INFO [org.hibernate.cfg.Configuration] Found mapping
document in jar: beans/tn3270_inactivity.hbm.xml
2007-12-03 16:44:41,751 DEBUG [org.hibernate.util.DTDEntityResolver] trying to
resolve system-id [http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd]
2007-12-03 16:44:41,751 DEBUG [org.hibernate.util.DTDEntityResolver] recognized
hibernate namespace; attempting to resolve on classpath under org/hibernate/
2007-12-03 16:44:41,767 DEBUG [org.hibernate.util.DTDEntityResolver] located
[http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd] in classpath
2007-12-03 16:44:42,017 INFO [org.hibernate.cfg.HbmBinder] Mapping class:
beans.InactiveDeviceBean -> tn3270.inactivity
2007-12-03 16:44:42,205 INFO [org.hibernate.util.NamingHelper] JNDI
InitialContext properties:{}
2007-12-03 16:44:42,220 INFO
[org.hibernate.connection.DatasourceConnectionProvider] Using datasource:
java:/MyDS
2007-12-03 16:44:42,611 DEBUG [org.hibernate.cfg.SettingsFactory] could not get
database version from JDBC metadata
2007-12-03 16:44:42,611 INFO [org.hibernate.cfg.SettingsFactory] RDBMS:
Oracle, version: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
2007-12-03 16:44:42,611 INFO [org.hibernate.cfg.SettingsFactory] JDBC driver:
Oracle JDBC driver, version: 9.2.0.1.0
2007-12-03 16:44:42,642 INFO [org.hibernate.dialect.Dialect] Using dialect:
org.hibernate.dialect.Oracle9Dialect
2007-12-03 16:44:42,642 WARN [org.hibernate.dialect.Oracle9Dialect] The
Oracle9Dialect dialect has been deprecated; use either Oracle9iDialect or
Oracle10gDialect instead
2007-12-03 16:44:42,642 INFO
[org.hibernate.transaction.TransactionFactoryFactory] Transaction strategy:
org.hibernate.transaction.JTATransactionFactory
2007-12-03 16:44:42,642 INFO [org.hibernate.util.NamingHelper] JNDI
InitialContext properties:{}
2007-12-03 16:44:42,642 INFO
[org.hibernate.transaction.TransactionManagerLookupFactory] instantiating
TransactionManagerLookup:
org.hibernate.transaction.JBossTransactionManagerLookup
2007-12-03 16:44:42,658 INFO
[org.hibernate.transaction.TransactionManagerLookupFactory] instantiated
TransactionManagerLookup
2007-12-03 16:44:42,658 INFO
[org.hibernate.transaction.TransactionManagerLookupFactory] instantiating
TransactionManagerLookup:
org.hibernate.transaction.JBossTransactionManagerLookup
2007-12-03 16:44:42,658 INFO
[org.hibernate.transaction.TransactionManagerLookupFactory] instantiated
TransactionManagerLookup
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Automatic
flush during beforeCompletion(): enabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Automatic
session close at end of transaction: enabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] JDBC batch
size: 15
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] JDBC batch
updates for versioned data: disabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Scrollable
result sets: enabled
2007-12-03 16:44:42,658 DEBUG [org.hibernate.cfg.SettingsFactory] Wrap result
sets: disabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] JDBC3
getGeneratedKeys(): disabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Connection
release mode: after_statement
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Maximum outer
join fetch depth: 3
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Default batch
fetch size: 1
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Generate SQL
with comments: disabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Order SQL
updates by primary key: disabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Order SQL
inserts for batching: disabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Query
translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
2007-12-03 16:44:42,658 INFO [org.hibernate.hql.ast.ASTQueryTranslatorFactory]
Using ASTQueryTranslatorFactory
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Query
language substitutions: {}
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] JPA-QL strict
compliance: disabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Second-level
cache: enabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Query cache:
disabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Cache
provider: org.hibernate.cache.NoCacheProvider
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Optimize
cache for minimal puts: disabled
2007-12-03 16:44:42,658 INFO [org.hibernate.cfg.SettingsFactory] Structured
second-level cache entries: disabled
2007-12-03 16:44:42,673 INFO [org.hibernate.cfg.SettingsFactory] Echoing all
SQL to stdout
2007-12-03 16:44:42,673 INFO [org.hibernate.cfg.SettingsFactory] Statistics:
disabled
2007-12-03 16:44:42,673 INFO [org.hibernate.cfg.SettingsFactory] Deleted
entity synthetic identifier rollback: disabled
2007-12-03 16:44:42,673 INFO [org.hibernate.cfg.SettingsFactory] Default
entity-mode: pojo
2007-12-03 16:44:42,673 INFO [org.hibernate.cfg.SettingsFactory] Named query
checking : enabled
2007-12-03 16:44:42,720 INFO [org.hibernate.impl.SessionFactoryImpl] building
session factory
2007-12-03 16:44:42,720 DEBUG [org.hibernate.impl.SessionFactoryImpl] Session
factory constructed with filter configurations : {}
2007-12-03 16:44:42,720 DEBUG [org.hibernate.impl.SessionFactoryImpl]
instantiating session factory with properties:
{hibernate.cache.use_minimal_puts=false,
hibernate.transaction.flush_before_completion=true,
hibernate.transaction.auto_close_session=true,
hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider,
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup,
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect,
hibernate.cache.use_query_cache=false, hibernate.max_fetch_depth=3,
hibernate.connection.agressive_release=true, hibernate.connection.username=xxx,
hibernate.connection.datasource=java:/MyDS, hibernate.show_sql=true,
hibernate.connection.password=antelope,
hibernate.connection.release_mode=after_statement,
hibernate.transaction.factory_class=org.hibernate.transaction.JTATransactionFactory}
2007-12-03 16:44:43,064 DEBUG [org.hibernate.impl.SessionFactoryObjectFactory]
initializing class SessionFactoryObjectFactory
2007-12-03 16:44:43,080 DEBUG [org.hibernate.impl.SessionFactoryObjectFactory]
registered: 8a1f66ba16a1f7d70116a1f7d9380000 (unnamed)
2007-12-03 16:44:43,080 INFO [org.hibernate.impl.SessionFactoryObjectFactory]
Not binding factory to JNDI, no JNDI name configured
2007-12-03 16:44:43,080 DEBUG [org.hibernate.impl.SessionFactoryImpl]
instantiated session factory
2007-12-03 16:44:43,080 DEBUG [org.hibernate.impl.SessionFactoryImpl] obtaining
JTA TransactionManager
2007-12-03 16:44:43,080 INFO [org.hibernate.util.NamingHelper] JNDI
InitialContext properties:{}
2007-12-03 16:44:43,080 DEBUG [org.hibernate.impl.SessionFactoryImpl] Checking
0 named HQL queries
2007-12-03 16:44:43,080 DEBUG [org.hibernate.impl.SessionFactoryImpl] Checking
0 named SQL queries
2007-12-03 16:44:43,080 DEBUG [org.hibernate.impl.SessionFactoryImpl] Returning
a Reference to the SessionFactory
Any ideas?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4110031#4110031
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4110031
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user