Hello,
This forum has been a great help to use Spring on top of Hibernate but now I am stuck![]()
The problem is that when I'm trying to save (via Junit test) a BLOB object into a column I get the following DataAccessResourceFailureException which is in fact a wrapper for a [java.rmi.MarshalException] :
First of all I am using : Spring 1.1.1, Weblogic 8.1sp3, oracle 9i, oracle driver = oracle.jdbc.xa.client.OracleXADataSourceCode:at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.getOracleConnection(OracleLobHandler.java:357) at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.createLob(OracleLobHandler.java:328) at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.setBlobAsBytes(OracleLobHandler.java:216) at org.springframework.orm.hibernate.support.BlobByteArrayType.nullSafeSetInternal(BlobByteArrayType.java:98) at org.springframework.orm.hibernate.support.AbstractLobType.nullSafeSet(AbstractLobType.java:143) at net.sf.hibernate.type.CustomType.nullSafeSet(CustomType.java:118) at net.sf.hibernate.persister.EntityPersister.dehydrate(EntityPersister.java:393) at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:466) at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:442) at net.sf.hibernate.impl.ScheduledInsertion.execute(ScheduledInsertion.java:29) at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2407) at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2360) at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2229) at net.sf.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:61) at org.springframework.orm.hibernate.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:463) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:373) at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:242) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:66) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:138) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:152) at $Proxy10.storeCaseEvidence(Unknown Source) at be.smalsmvm.genesis.business.service.EvidenceBusinessServiceTest.teststoreCaseEvidence(EvidenceBusinessServiceTest.java:84) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:421) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:305) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:186) Caused by: weblogic.rmi.extensions.RemoteRuntimeException: Unexpected Exception - with nested exception: [java.rmi.MarshalException: error marshalling return; nested exception is: java.io.NotSerializableException: oracle.jdbc.driver.LogicalConnection] at weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection_813_WLStub.getVendorConnection(Unknown Source) at weblogic.jdbc.rmi.SerialConnection_weblogic_jdbc_rmi_internal_ConnectionImpl_weblogic_jdbc_wrapper_JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection_813_WLStub.getVendorConnection(Unknown Source) ... 42 more
Here's what I have in the applicationContext concerning hibernate and transactions :
Is the problem the driver [oracle.jdbc.xa.client.OracleXADataSource] I'm using or the fact that I'm testing this via Junit which extend AbstractSpringContextTests ?Code:<!-- the datasource --> <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiTemplate"> <ref local="jndiTemplate" /> </property> <property name="jndiName"> <value>${datasource.jndiName}</value> </property> </bean> <!-- the SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"/> </property> <property name="lobHandler"> <ref bean="oracleLobHandler"/> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="show_sql">false</prop> <prop key="use_outer_join">false</prop> </props> </property> <property name="mappingJarLocations"> <list> <value>file:${genesis.datamodel.jar}</value> </list> </property> </bean> <!-- Database LOB Handling --> <bean name="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.WebLogicNativeJdbcExtractor"/> <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler"> <property name="nativeJdbcExtractor"> <ref bean="nativeJdbcExtractor"/> </property> </bean> <!-- the HibernateTemplate --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) --> <bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <!-- Transaction Proxy Template --> <bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref local="transactionManager"/> </property> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean id="evidenceBusinessService" parent="txProxyTemplate"> <property name="target"> <bean class="be.smalsmvm.genesis.business.service.impl.EvidenceBusinessServiceImpl"> <property name="caseDAO"> <ref local="caseDAO"/> </property> <property name="evidenceDAO"> <ref local="evidenceDAO"/> </property> </bean> </property> </bean>
Any help is highly appreciated and if you need more info let me know !
Thanks.
Kristof


Reply With Quote
