Bonjour,
J'ai un moteur de calcul qui crée plusieurs transactions. Le but étant de gérer un certain lotissement des centaines de milliers de données à traiter, pour qu'une transaction permette la gestion d'un nombre défini d'entrées. Par exemple, 100.000 entrées seront gérées par 100 transaction gérant chacune 1000 entrées.
A la fin de mon exécution, plus d'un millier de transactions ont été gérées. Parmi elles, deux aboutissent à une erreur dont je ne parviens pas à déterminer la cause :
Le point d'entrée Java créant la transaction est une méthode appellée eclatementMoteurListClePrimeFonctionelle, faisant elle-même appel à des méthodes nommées createXXX, updateXXXX, deleteXXXX, ou encore miseAJourXXXX. La transaction est définie comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 [27/11/08 15:23:16:938 CET] 0000004a SystemErr R org.springframework.orm.jdo.JdoSystemException: [3.8] La validation de la transaction a échoué.; nested exception is [3.8] La validation de la transaction a échoué. [LiDO 3.1.1 build 678 utilisant le driver oracle.jdbc.driver.OracleDriver avec le JDK 1.4.2 de IBM Corporation] javax.jdo.JDOException: [3.8] La validation de la transaction a échoué. caused by: java.lang.NullPointerException at xcalia.lido.internal.cache.shared.d.a(d.java(Compiled Code)) at xcalia.lido.internal.cache.shared.d.b(d.java(Compiled Code)) at xcalia.lido.internal.cache.shared.d.a(d.java(Compiled Code)) at xcalia.lido.internal.cache.e.a(e.java(Compiled Code)) at xcalia.lido.internal.cache.e.a(e.java:115) at xcalia.lido.internal.cache.c.a(c.java:126) at xcalia.lido.f.p(f.java:607) at xcalia.lido.f.commit(f.java:1656) at org.springframework.orm.jdo.JdoTransactionManager.doCommit(JdoTransactionManager.java:376) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:500) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:473) at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:267) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176) at $Proxy2.eclatementMoteurListClePrimeFonctionelle(Unknown Source) at com.bnppa.sdf.oasis.services.all.engineEp.impl.ThreadEclate.startProcess(ThreadEclate.java:85) at com.bnppa.sdf.oasis.services.all.engineEp.impl.ThreadEclate.run(ThreadEclate.java:54) [27/11/08 15:23:16:969 CET] 0000004a SystemErr R [LiDO 3.1.1 build 678 utilisant le driver oracle.jdbc.driver.OracleDriver avec le JDK 1.4.2 de IBM Corporation] javax.jdo.JDOException: [3.8] La validation de la transaction a échoué. caused by: java.lang.NullPointerException at xcalia.lido.internal.cache.shared.d.a(d.java(Compiled Code)) at xcalia.lido.internal.cache.shared.d.b(d.java(Compiled Code)) at xcalia.lido.internal.cache.shared.d.a(d.java(Compiled Code)) at xcalia.lido.internal.cache.e.a(e.java(Compiled Code)) at xcalia.lido.internal.cache.e.a(e.java:115) at xcalia.lido.internal.cache.c.a(c.java:126) at xcalia.lido.f.p(f.java:607) at xcalia.lido.f.commit(f.java:1656) at org.springframework.orm.jdo.JdoTransactionManager.doCommit(JdoTransactionManager.java:376) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:500) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:473) at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:267) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176) at $Proxy2.eclatementMoteurListClePrimeFonctionelle(Unknown Source) at com.bnppa.sdf.oasis.services.all.engineEp.impl.ThreadEclate.startProcess(ThreadEclate.java:85) at com.bnppa.sdf.oasis.services.all.engineEp.impl.ThreadEclate.run(ThreadEclate.java:54)
Y aurait-il un problème dans mon paramétrage ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <bean id="eclatementMassifCumule" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" ref="oasisEngineEpTransactionManager"/> <!-- The target is the clientServicesImpl defined above --> <property name="target" ref="moteurEclatementCumuleImpl"/> <!-- All method calls are encapsulated in a JDO transaction --> <property name="transactionAttributes"> <props> <prop key="create*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="delete*">PROPAGATION_REQUIRED</prop> <prop key="miseAjour*">PROPAGATION_REQUIRED</prop> <prop key="eclatementMoteurListClePrimeFonctionelle">PROPAGATION_REQUIRED,readOnly</prop> <prop key="getListClePrimeFonctionelleRange">PROPAGATION_REQUIRED,readOnly</prop> <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean>
Partager