J'ai essayé de faire JPAKnowledgeService
depuis environ 3 jours maintenant, et je suis assez près d'abandonner, il semble juste que trop de configuration et de travail de détail pour ce qu'il est/est. Cependant,Bitronix ne peut pas gérer ma source de données/transactions dans le projet de démarrage Spring
j'avais this problem au départ, ce qui est disparu après avoir ajouté
dans mon dossier jndi.properties
, comme la réponse suggère. J'ai finalement pu créer un StatefulKnowledgeSession
, et j'ai pensé que le travail était terminé. Mais dans le chat de drools, le même type a suggéré que mes transactions pourraient avoir été traitées par Hibernate au lieu de Bitronix, ce qui pourrait rendre ma persistance non-transactionnelle.
Et je suppose qu'il est juste puisque chaque fois que j'essayé d'insérer un Object
dans la session de connaissances et d'appeler fireAllRules
, j'étais coincé à:
executing transaction with 0 enlisted resource
suivi par:
transaction timed out: a Bitronix Transaction with GTRID [3132372E302E312E310000000000AFB9D800000006], status=MARKED_ROLLBACK, 0 resource(s) enlisted (started Thu Jan 01 05:11:56 EET 1970)
Après cela ce que j'ai changé est; Je mis à jour mon persistence.xml
comme suit:
<?xml version="1.0" encoding="UTF-8" ?>
<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="org.jbpm.persistence.jpa" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>java:comp/env/jdbc/jbpm</jta-data-source>
<class>org.drools.persistence.info.SessionInfo</class>
<properties>
<property name="hibernate.jndi.class" value="bitronix.tm.jndi.BitronixInitialContextFactory"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
</properties>
</persistence-unit>
</persistence>
ajouté cette ligne dans mon application.properties
:
spring.datasource.jndi-name=java:comp/env/jdbc/jbpm
et a donné un nom JNDI à mon source de données pour tomcat embarqué en suivant these instructions.
et l'erreur est revenue:
Caused by: java.lang.NullPointerException: null
at org.drools.persistence.jta.JtaTransactionManager.getStatus(JtaTransactionManager.java:273) ~[drools-persistence-jpa-6.5.0.Final.jar:6.5.0.Final]
at org.drools.persistence.jpa.AbstractPersistenceContextManager.getApplicationScopedEntityManager(AbstractPersistenceContextManager.java:78) ~[drools-persistence-jpa-6.5.0.Final.jar:6.5.0.Final]
at org.drools.persistence.jpa.JpaPersistenceContextManager.getApplicationScopedPersistenceContext(JpaPersistenceContextManager.java:55) ~[drools-persistence-jpa-6.5.0.Final.jar:6.5.0.Final]
at org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:103) ~[drools-persistence-jpa-6.5.0.Final.jar:6.5.0.Final]
... 43 common frames omitted
Les tableaux liés à JPAKnowledgeService
sont créés dans la base de données, donc je suppose que mon inscription JNDI est couronnée de succès, mais je ne semblent pas être en mesure de trouver Bitronix comme mon gestionnaire de transactions depuis JtaTransactionManager
semble aussi nul. Qu'est-ce que je fais mal? Je suis frustré et désemparé.
@Akshay Est-ce une blague? –
Je viens de voir l'erreur ainsi commentée .. – Akshay
Est-ce que vous vous rendez compte que ce n'est pas une question NPE mais une question sur la façon de configurer Hibernate pour utiliser Bitronix? Vous marquez ma question comme doublon d'une question qui n'est d'aucune aide (et sans relation avec la mienne), et qui bloque l'intérêt potentiel. C'est impoli et pas apprécié. –