rmcalderero
Mar 5th, 2008, 10:29 AM
Hi,
Anyone has got a working configuration with atomikos transactions, JMS (activemq), JPA(Hibernate) ??
I have spent some days trying to configure my application. Finally jms operations are done correctly (rollback) but i cant solve the hibernate problem listed below. I reduced the jpa operation to persisting a simple entity but still the same problem. The same persist works correctly within a test.
Exception:
17:00:35 - INFO - could not bind value 'test description' to parameter: 1; null
17:00:35 - WARN - Invocation of method 'leerMensajes' on target class [class $Proxy29] failed
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.util.MethodInvoker.invoke(Meth odInvoker.java:275)
at org.springframework.scheduling.support.MethodInvok ingRunnable.run(MethodInvokingRunnable.java:76)
at org.springframework.scheduling.timer.DelegatingTim erTask.run(DelegatingTimerTask.java:66)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at org.hibernate.jdbc.AbstractBatcher.closePreparedSt atement(AbstractBatcher.java:534)
at org.hibernate.jdbc.AbstractBatcher.closeStatement( AbstractBatcher.java:269)
at org.hibernate.id.insert.AbstractReturningDelegate. releaseStatement(AbstractReturningDelegate.java:58 )
at org.hibernate.id.insert.AbstractReturningDelegate. performInsert(AbstractReturningDelegate.java:36)
at org.hibernate.persister.entity.AbstractEntityPersi ster.insert(AbstractEntityPersister.java:2158)
at org.hibernate.persister.entity.AbstractEntityPersi ster.insert(AbstractEntityPersister.java:2638)
at org.hibernate.action.EntityIdentityInsertAction.ex ecute(EntityIdentityInsertAction.java:48)
at org.hibernate.engine.ActionQueue.execute(ActionQue ue.java:250)
...............
at org.fundacionctic.tawmonitor.motor.service.GestorA nalisisServiceImpl.leerMensajes(GestorAnalisisServ iceImpl.java:91)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoi npointUsingReflection(AopUtils.java:301)
at org.springframework.aop.framework.ReflectiveMethod Invocation.invokeJoinpoint(ReflectiveMethodInvocat ion.java:182)
at org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :149)
at org.springframework.transaction.interceptor.Transa ctionInterceptor.invoke(TransactionInterceptor.jav a:106)
at org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :171)
at org.springframework.aop.interceptor.ExposeInvocati onInterceptor.invoke(ExposeInvocationInterceptor.j ava:89)
at org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :171)
at org.springframework.aop.framework.JdkDynamicAopPro xy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy29.leerMensajes(Unknown Source)
... 9 more
persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="tawmonitorDatabase" transaction-type="JTA"> <!-- RESOURCE_LOCAL JTA -->
......
</properties>
</persistence-unit>
</persistence>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
....................>
<bean id="motorDataSource" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">
<property name="uniqueResourceName"><value>XADBMS</value></property>
<property name="xaDataSourceClassName"><value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value></property>
<property name="xaDataSourceProperties">
<value>user=tawmonitor;password=ctic2005;url=jdbc:mysql://proteo/tawmonitor_motor;portNumber=3306</value>
</property>
<property name="exclusiveConnectionMode"><value>true</value></property>
<property name="connectionPoolSize" value="3"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityMa nagerFactoryBean">
<property name="dataSource" ref="motorDataSource" />
<property name="persistenceUnitName" value="tawmonitorDatabase" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVen dorAdapter">
<property name="showSql" value="true"/>
<property name="database" value="MYSQL"/>
<!-- <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> -->
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/>
</bean>
</property>
<!--
<property name="jpaProperties">
<props>
<prop key="hibernate.transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionMana gerLookup</prop>
</props>
</property>
-->
<property name="jpaPropertyMap">
<map>
<entry key="hibernate.transaction.manager_lookup_class" value="com.atomikos.icatch.jta.hibernate3.TransactionMana gerLookup"/>
<entry key="hibernate.transaction.flush_before_completion" value="true"/>
<!-- <entry key="hibernate.transaction.auto_close_session" value="true"/> -->
<!-- <entry key="hibernate.current_session_context_class" value="jta"/> -->
<entry key="hibernate.current_session_context_class" value="org.hibernate.context.JTASessionContext"/>
<entry key="hibernate.connection.release_mode" value="auto"/>
</map>
</property>
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDia lect"/>
</property>
</bean>
<!-- bean post-processor for JPA annotations -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnn otationBeanPostProcessor"/>
.......................
<bean id="userTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
<property name="forceShutdown" value="true" />
<property name="startupTransactionService" value="true" />
<property name="transactionTimeout" value="60" />
</bean>
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp"/>
<bean id="jtaTransactionManager" class="org.springframework.transaction.jta.JtaTransaction Manager">
<property name="transactionManager"><ref bean="userTransactionManager" /></property>
<property name="userTransaction"><ref bean="atomikosUserTransaction" /></property>
<property name="transactionSynchronizationName" value="SYNCHRONIZATION_ON_ACTUAL_TRANSACTION" />
</bean>
<tx:advice id="txAdvice" transaction-manager="jtaTransactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="OATransactionsServiceOperations"
expression="execution(* org.fundacionctic.tawmonitor.motor.service.GestorA nalisisService.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="OATransactionsServiceOperations"/>
</aop:config>
<aop:config>
<aop:pointcut id="MessageListenerOperations" expression="execution(* javax.jms.MessageListener.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="MessageListenerOperations"/>
</aop:config>
In posts of different forums i have read people is changing from jpa to plain hibernate LocalSessionFactoryBean abstraction.
Anyone have succeeded with a similar configuration? Or maybe with others xa trans managers such as jtom, jbosstm,....?
Any help will be appreciated. Thanks.
Anyone has got a working configuration with atomikos transactions, JMS (activemq), JPA(Hibernate) ??
I have spent some days trying to configure my application. Finally jms operations are done correctly (rollback) but i cant solve the hibernate problem listed below. I reduced the jpa operation to persisting a simple entity but still the same problem. The same persist works correctly within a test.
Exception:
17:00:35 - INFO - could not bind value 'test description' to parameter: 1; null
17:00:35 - WARN - Invocation of method 'leerMensajes' on target class [class $Proxy29] failed
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.util.MethodInvoker.invoke(Meth odInvoker.java:275)
at org.springframework.scheduling.support.MethodInvok ingRunnable.run(MethodInvokingRunnable.java:76)
at org.springframework.scheduling.timer.DelegatingTim erTask.run(DelegatingTimerTask.java:66)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at org.hibernate.jdbc.AbstractBatcher.closePreparedSt atement(AbstractBatcher.java:534)
at org.hibernate.jdbc.AbstractBatcher.closeStatement( AbstractBatcher.java:269)
at org.hibernate.id.insert.AbstractReturningDelegate. releaseStatement(AbstractReturningDelegate.java:58 )
at org.hibernate.id.insert.AbstractReturningDelegate. performInsert(AbstractReturningDelegate.java:36)
at org.hibernate.persister.entity.AbstractEntityPersi ster.insert(AbstractEntityPersister.java:2158)
at org.hibernate.persister.entity.AbstractEntityPersi ster.insert(AbstractEntityPersister.java:2638)
at org.hibernate.action.EntityIdentityInsertAction.ex ecute(EntityIdentityInsertAction.java:48)
at org.hibernate.engine.ActionQueue.execute(ActionQue ue.java:250)
...............
at org.fundacionctic.tawmonitor.motor.service.GestorA nalisisServiceImpl.leerMensajes(GestorAnalisisServ iceImpl.java:91)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoi npointUsingReflection(AopUtils.java:301)
at org.springframework.aop.framework.ReflectiveMethod Invocation.invokeJoinpoint(ReflectiveMethodInvocat ion.java:182)
at org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :149)
at org.springframework.transaction.interceptor.Transa ctionInterceptor.invoke(TransactionInterceptor.jav a:106)
at org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :171)
at org.springframework.aop.interceptor.ExposeInvocati onInterceptor.invoke(ExposeInvocationInterceptor.j ava:89)
at org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :171)
at org.springframework.aop.framework.JdkDynamicAopPro xy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy29.leerMensajes(Unknown Source)
... 9 more
persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="tawmonitorDatabase" transaction-type="JTA"> <!-- RESOURCE_LOCAL JTA -->
......
</properties>
</persistence-unit>
</persistence>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
....................>
<bean id="motorDataSource" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">
<property name="uniqueResourceName"><value>XADBMS</value></property>
<property name="xaDataSourceClassName"><value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value></property>
<property name="xaDataSourceProperties">
<value>user=tawmonitor;password=ctic2005;url=jdbc:mysql://proteo/tawmonitor_motor;portNumber=3306</value>
</property>
<property name="exclusiveConnectionMode"><value>true</value></property>
<property name="connectionPoolSize" value="3"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityMa nagerFactoryBean">
<property name="dataSource" ref="motorDataSource" />
<property name="persistenceUnitName" value="tawmonitorDatabase" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVen dorAdapter">
<property name="showSql" value="true"/>
<property name="database" value="MYSQL"/>
<!-- <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> -->
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/>
</bean>
</property>
<!--
<property name="jpaProperties">
<props>
<prop key="hibernate.transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionMana gerLookup</prop>
</props>
</property>
-->
<property name="jpaPropertyMap">
<map>
<entry key="hibernate.transaction.manager_lookup_class" value="com.atomikos.icatch.jta.hibernate3.TransactionMana gerLookup"/>
<entry key="hibernate.transaction.flush_before_completion" value="true"/>
<!-- <entry key="hibernate.transaction.auto_close_session" value="true"/> -->
<!-- <entry key="hibernate.current_session_context_class" value="jta"/> -->
<entry key="hibernate.current_session_context_class" value="org.hibernate.context.JTASessionContext"/>
<entry key="hibernate.connection.release_mode" value="auto"/>
</map>
</property>
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDia lect"/>
</property>
</bean>
<!-- bean post-processor for JPA annotations -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnn otationBeanPostProcessor"/>
.......................
<bean id="userTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
<property name="forceShutdown" value="true" />
<property name="startupTransactionService" value="true" />
<property name="transactionTimeout" value="60" />
</bean>
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp"/>
<bean id="jtaTransactionManager" class="org.springframework.transaction.jta.JtaTransaction Manager">
<property name="transactionManager"><ref bean="userTransactionManager" /></property>
<property name="userTransaction"><ref bean="atomikosUserTransaction" /></property>
<property name="transactionSynchronizationName" value="SYNCHRONIZATION_ON_ACTUAL_TRANSACTION" />
</bean>
<tx:advice id="txAdvice" transaction-manager="jtaTransactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="OATransactionsServiceOperations"
expression="execution(* org.fundacionctic.tawmonitor.motor.service.GestorA nalisisService.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="OATransactionsServiceOperations"/>
</aop:config>
<aop:config>
<aop:pointcut id="MessageListenerOperations" expression="execution(* javax.jms.MessageListener.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="MessageListenerOperations"/>
</aop:config>
In posts of different forums i have read people is changing from jpa to plain hibernate LocalSessionFactoryBean abstraction.
Anyone have succeeded with a similar configuration? Or maybe with others xa trans managers such as jtom, jbosstm,....?
Any help will be appreciated. Thanks.