私は約3日間JPAKnowledgeService
を作成しようとしていましたが、あまりにも多くの設定と詳細作業が必要ですそうです。しかし、BitronixがSpringブートプロジェクトでデータソース/トランザクションを管理できない
は、私は私のjndi.properties
ファイルに
を追加した後に答えが示唆するように、無くなっされ、当初はthis problemを持っていました。私は最終的にStatefulKnowledgeSession
を作成することができ、作業は終わったと考えました。しかし、ドールズチャットでは、同じ人が私のトランザクションがBitronixの代わりにHibernateによって処理されている可能性があると提案しました。これは、私の永続性を完全に非トランザクションにする可能性があります。
そして私は、私は知識のセッションにObject
を挿入し、fireAllRules
を呼び出そうとするたびに、私はで立ち往生して以来、彼は右であると思います。その後
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)
:によって
executing transaction with 0 enlisted resource
続きます私が変えたのは、
<?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>
は私
application.properties
にこの行を追加:私は次のように私の
persistence.xml
を更新
spring.datasource.jndi-name=java:comp/env/jdbc/jbpm
とthese instructionsに従うことによって、組み込みのTomcatのための私のデータソースにJNDI名を与えました。
とエラーが戻ってきた:JPAKnowledgeService
に関連
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
テーブルがデータベースに作成されているので、私は私のJNDI登録が成功すると思いますが、私のようにBitronixを見つけることができるようには見えません。 JtaTransactionManager
以降の取引マネージャーはnullと思われます。私は間違って何をしていますか?私は欲求不満であり、無縁です。
@Akshayこれは冗談ですか? –
私はこのエラーを見ましたので、コメントしました.. – Akshay
これはNPEの質問ではありませんが、HibernateをBitronixを使用するように設定する方法についての質問はありますか?あなたは、私の質問をヘルプのない(そして私のものとは関係のない)質問の重複としてマーキングし、潜在的な関心をブロックします。これは失礼であり、高く評価されていません。 –