[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2023?page=c...
]
Andrei Iltchenko commented on HHH-2023:
---------------------------------------
I tested things more and can say that Hibernate still doesn't work correctly on WAS
6.0.2 (which I believe deserves a higher severity than Minor)
For validation perposes, after opening a new session with set the flush mode to never:
Transaction tx = null;
Session session = (Session) obtainSessionFactoryRootpackageEM().openSession();
session.setFlushMode(FlushMode.NEVER); // Postpone flushing until sucessful validation.
try {
tx = session.beginTransaction();
Then we carry out necessary modifications, validate them using an interceptor, and finally
commit our work:
if (validationErrors.isEmpty()) {
// Validation went fine. Flush changes to the datasource.
session.setFlushMode(FlushMode.COMMIT); // Enable flushing.
tx.commit();
This works fine on JBoss but on WAS 6.0.2 (with CMTTransactionFactory) the attempt to
change the flush mode to COMMIT causes the following exception:
[8/24/06 14:12:39:658 CEST] 0000001e ExceptionUtil E CNTR0020E: EJB threw an unexpected
(non-declared) exception during invocation of method "setServiceAgreement" on
bean "BeanId(OJ1#rootpackageEjb.jar#ServiceAgreementSvc, null)". Exception data:
java.lang.NullPointerException
at oracle.jdbc.dbaccess.DBData.clearItem(DBData.java:431)
at oracle.jdbc.dbaccess.DBDataSetImpl.clearItem(DBDataSetImpl.java:3528)
at
oracle.jdbc.driver.OraclePreparedStatement.clearParameters(OraclePreparedStatement.java:3401)
at
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.resetStatement(WSJdbcConnection.java:2189)
at
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:1840)
at
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:1792)
at
org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:497)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:94)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:87)
at
org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:218)
at
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2106)
at
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2503)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:51)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
at
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
at
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:993)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:340)
at org.hibernate.transaction.CMTTransaction.commit(CMTTransaction.java:64)
at
rootpackage.application.business.logic.ServiceAgreementSvcBean.storeServiceAgreement(ServiceAgreementSvcBean.java:896)
at
rootpackage.application.business.logic.ServiceAgreementSvcBean.access$300(ServiceAgreementSvcBean.java:79)
at
rootpackage.application.business.logic.ServiceAgreementSvcBean$ServiceAgreementSA.setData(ServiceAgreementSvcBean.java:319)
at
rootpackage.application.business.logic.ServiceAgreementSvcBean.setServiceAgreement(ServiceAgreementSvcBean.java:1327)
at
rootpackage.application.business.logic.ServiceAgreementSvcBean.setServiceAgreement(ServiceAgreementSvcBean.java:1389)
at
rootpackage.application.business.logic.EJSRemoteStatelessServiceAgreementSvc_10611836.setServiceAgreement(Unknown
Source)
at
rootpackage.application.business.logic._ServiceAgreementSvc_Stub.setServiceAgreement(_ServiceAgreementSvc_Stub.java:447)
at
rootpackage.application.business.facade.ServiceAgreementSvcServiceAgreementBusinessFacade.storeMasterCollection(ServiceAgreementSvcServiceAgreementBusinessFacade.java:709)
at
rootpackage.application.business.facade.ServiceAgreementSvcServiceAgreementBusinessFacade.doStore(ServiceAgreementSvcServiceAgreementBusinessFacade.java:309)
at
com.compuware.alturadev.businessfacade.BusinessFacadeBase.store(BusinessFacadeBase.java:144)
at
rootpackage.application.presentation.ServiceAgreementSvcStoreAction.execute(ServiceAgreementSvcStoreAction.java:81)
at
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1282)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1239)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:136)
at
rootpackage.application.presentation.filters.SetCharacterEncodingFilterRootpackageWeb.doFilter(SetCharacterEncodingFilterRootpackageWeb.java:139)
at
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:142)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:121)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:82)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:670)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:2965)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:221)
at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:210)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1931)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:84)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:472)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:411)
at
com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:101)
at
com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566)
at
com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:619)
at
com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952)
at
com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1470)
performance optimization of
JTATransactionFactory.isTransactionInProgress()
---------------------------------------------------------------------------
Key: HHH-2023
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2023
Project: Hibernate3
Type: Improvement
Components: core
Versions: 3.2.0.cr2
Environment: 1) WebSphere Application Server 6.0.2.9, Base
2) Hibernate version: 3.2.CR2
3) Oracle 10g
4) Driver Oracle 10g XA thin driver (Managed Connection)
5) SessionFacade with a transactional attribute Requires
Reporter: Andrei Iltchenko
Assignee: Steve Ebersole
Priority: Minor
Fix For: 3.2.0.cr4
I am getting the following exception when I try to use Hibernate on WebSphere 6.0.2.9 in
a business method of a CMT SLSB. The exception occurs when I call
'session.beginTransaction()':
org.hibernate.TransactionException: Could not find UserTransaction in JNDI:
at org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:64)
at
org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.java:57)
at org.hibernate.jdbc.JDBCContext.getTransaction(JDBCContext.java:186)
at org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1308)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1318)
at
rootpackage.application.business.logic.ServiceAgreementSvcBean.storeServiceAgreement(ServiceAgreementSvcBean.java:832)
... 37 more
Caused by: javax.naming.NameNotFoundException: Name "comp/UserTransaction" not
found in context "java:".
at com.ibm.ws.naming.ipbase.NameSpace.lookupInternal(NameSpace.java:1094)
at com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:990)
at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1263)
at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:201)
at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:142)
at javax.naming.InitialContext.lookup(InitialContext.java:361)
at org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)
My SessionFactory configuration file looks as follows:
<session-factory name="java:hibernate/RootpackageEntitySessionFactory">
<!-- DBMS dialect: oracle. -->
<property
name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property
name="hibernate.connection.datasource">jdbc/optimalj5</property>
<property
name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
<property
name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</property>
<!-- Cache manager -->
<property
name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
<!-- Mapping files for entity module: -->
...
</session-factory>
adding additional configuration options as suggested in
<
http://opensource.atlassian.com/projects/hibernate/browse/HHH-198>
<property
name="hibernate.transaction.flush_before_completion">true</property>
<property
name="hibernate.transaction.auto_close_session">true</property>
causes the exception to be thrown at a time when I call openSession() on a SessionFactory
instance:
Exception data: org.hibernate.TransactionException: Unable to locate UserTransaction to
check status
at
org.hibernate.transaction.JTATransactionFactory.isTransactionInProgress(JTATransactionFactory.java:86)
at org.hibernate.jdbc.JDBCContext.isTransactionInProgress(JDBCContext.java:180)
at
org.hibernate.jdbc.JDBCContext.registerSynchronizationIfPossible(JDBCContext.java:158)
at org.hibernate.jdbc.JDBCContext.<init>(JDBCContext.java:75)
at org.hibernate.impl.SessionImpl.<init>(SessionImpl.java:215)
at
org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:470)
at
org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:494)
at
org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:502)
at
rootpackage.application.business.logic.ServiceAgreementSvcBean.retrieveAll(ServiceAgreementSvcBean.java:1584)
at
rootpackage.application.business.logic.EJSRemoteStatelessServiceAgreementSvc_10611836.retrieveAll(Unknown
Source)
at
rootpackage.application.business.logic._ServiceAgreementSvc_Stub.retrieveAll(_ServiceAgreementSvc_Stub.java:799)
at
rootpackage.application.business.facade.ServiceAgreementSvcServiceAgreementBusinessFacade.retrieveAll(ServiceAgreementSvcServiceAgreementBusinessFacade.java:1980)
at
rootpackage.application.business.facade.ServiceAgreementSvcServiceAgreementBusinessFacade.retrieveAll(ServiceAgreementSvcServiceAgreementBusinessFacade.java:1948)
at
rootpackage.application.presentation.ServiceAgreementSvcAction.invokeRetrieveAll(ServiceAgreementSvcAction.java:226)
at
rootpackage.application.presentation.ServiceAgreementSvcRetrieveAction.handleRetrieveAll(ServiceAgreementSvcRetrieveAction.java:144)
at
rootpackage.application.presentation.ServiceAgreementSvcRetrieveAction.retrieve(ServiceAgreementSvcRetrieveAction.java:247)
at
rootpackage.application.presentation.ServiceAgreementSvcRetrieveAction.execute(ServiceAgreementSvcRetrieveAction.java:87)
at
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1282)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1239)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:113)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:82)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:670)
at
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:322)
at
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
at
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1282)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1239)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:136)
at
rootpackage.application.presentation.filters.SetCharacterEncodingFilterRootpackageWeb.doFilter(SetCharacterEncodingFilterRootpackageWeb.java:139)
at
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:142)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:121)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:82)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:670)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:2965)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:221)
at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:210)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1931)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:84)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:472)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:411)
at
com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:101)
at
com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566)
at
com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:619)
at
com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952)
at
com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
Forum reference: <
http://forum.hibernate.org/viewtopic.php?t=963579>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira