BMP ejbStore + Hibernate/har/JTA ?
hserg Aug 15, 2007 7:36 AMcrosspost from http://www.jboss.com/index.html?module=bb&op=viewtopic&t=115524
When I'm trying to save BMP as:
public void SampleBean.ejbStore() throws EJBException, RemoteException { try { Session hsession = myHelper.getCurrentSession(); Session dynamicSession = hsession.getSession(EntityMode.MAP); dynamicSession.update(_objData); } catch (NamingException e) { e.printStackTrace(); } }
I have a serious issue - SampleBean.ejbStore doesn't save data to DB, and in the same time, Hibernate is sure that all data is stored.
As you can see from stacktrace, Hibernate stores data into internal cache, but doesn't flush this data into DB. IMHO, it happens because the synchronizer isn't created, which in turn happens because another Hibernate synchronizer exists and executes before SampleBean.ejbStore call.
So, is it a software bug or incorrect configuration of my environment?
System Thread [RMI TCP Connection(2)-192.168.x.x] (Suspended (breakpoint at line 1543 in SampleBean)) SampleBean.ejbStore() line: 1543 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 Method.invoke(Object, Object...) line: 585 BMPPersistenceManager.invokeEjbStore(EntityEnterpriseContext) line: 498 CachedConnectionInterceptor.invokeEjbStore(EntityEnterpriseContext) line: 294 EntityContainer.invokeEjbStore(EntityEnterpriseContext) line: 735 GlobalTxEntityMap$2.invokeEjbStore(Thread, EntityEnterpriseContext) line: 132 GlobalTxEntityMap$GlobalTxSynchronization.synchronize() line: 281 GlobalTxEntityMap$GlobalTxSynchronization.beforeCompletion() line: 345 TransactionImpl.doBeforeCompletion() line: 1491 TransactionImpl.beforePrepare() line: 1110 TransactionImpl.commit() line: 324 TxInterceptorCMT.endTransaction(Invocation, Transaction, Transaction, int) line: 501 TxInterceptorCMT.runWithTransactions(Invocation) line: 361 TxInterceptorCMT.invoke(Invocation) line: 181 LogInterceptor.invoke(Invocation) line: 205 ProxyFactoryFinderInterceptor.invoke(Invocation) line: 136 StatefulSessionContainer(SessionContainer).internalInvoke(Invocation) line: 648 StatefulSessionContainer(Container).invoke(Invocation) line: 954 GeneratedMethodAccessor87.invoke(Object, Object[]) line: not available DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 Method.invoke(Object, Object...) line: 585 ReflectedDispatcher.invoke(Invocation) line: 155 Invocation.dispatch() line: 94 Invocation.invoke() line: 86 XMBean(AbstractMBeanInvoker).invoke(String, Object[], String[]) line: 264 MBeanServerImpl.invoke(ObjectName, String, Object[], String[]) line: 659 JRMPInvoker$MBeanServerAction.invoke(ObjectName, String, Object[], String[]) line: 819 JRMPInvoker.invoke(Invocation) line: 420 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 Method.invoke(Object, Object...) line: 585 UnicastServerRef2(UnicastServerRef).dispatch(Remote, RemoteCall) line: 294 Transport$1.run() line: 153 AccessController.doPrivileged(PrivilegedExceptionAction<T>, AccessControlContext) line: not available [native method] TCPTransport(Transport).serviceCall(RemoteCall) line: 149 TCPTransport.handleMessages(Connection, boolean) line: 466 TCPTransport$ConnectionHandler.run() line: 707 Thread.run() line: 595
org.jboss.tm.TransactionImpl.doBeforeCompletion() line: 1491 this TransactionImpl (id=95) cause null done false gid GlobalId (id=122) heuristicCode 4 lastBranchId 1 lastResource TransactionImpl$Resource (id=126) lockDepth 0 locked null resources ArrayList<E> (id=128) resourcesEnded false start 1186562997765 status 0 sync Synchronization[12] (id=141) [0] StatefulSessionInstanceInterceptor$InstanceSynchronization (id=5356) [1] CacheSynchronization (id=5349) ctx SessionImpl (id=5368) hibernateTransaction null jdbcContext JDBCContext (id=5370) transaction TransactionImpl (id=95) [2] JTASessionContext$CleanupSynch (id=5350) [3] TransactionSynchronizer (id=5351) [4] EntitySynchronizationInterceptor$InstanceSynchronization (id=5352) [5] GlobalTxEntityMap$GlobalTxSynchronization (id=94) instances ArrayList<E> (id=5384) synchronizing true this$0 GlobalTxEntityMap (id=5398) tx TransactionImpl (id=95) [6] EntitySynchronizationInterceptor$InstanceSynchronization (id=5353) [7] EntitySynchronizationInterceptor$InstanceSynchronization (id=5354) [8] EntitySynchronizationInterceptor$InstanceSynchronization (id=5355) [9] null [10] null [11] null syncAllocSize 12 syncCount 9 threads HashSet<E> (id=145) timeout TimeoutPriorityQueueImpl$TimeoutExtImpl (id=137) timeoutPeriod 300000 trace true transactionLocalMap Collections$SynchronizedMap<K,V> (id=150) work null xid XidImpl (id=152) i 5