[rules-users] Reloading knowledge base from another thread

gkalabin grigory.kalabin at gmail.com
Thu Sep 27 07:24:04 EDT 2012


Hi everybody!

I'm using Drools 5.4.0.Final.

I'm checking changes in knowledge repository and if there is any - update
knowledge base.
The changes listening I perform like described in article:
https://community.jboss.org/wiki/PublishDroolsArtifactsFromAProductionEnvironment.

Updating knowledge base code:

    private static final Environment JBPM_ENVIRONMENT =
KnowledgeBaseFactory.newEnvironment();
    private static final KnowledgeSessionConfiguration JBPM_CONFIG;
    
    static {
        JBPM_ENVIRONMENT.set(EnvironmentName.ENTITY_MANAGER_FACTORY,
Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa"));
        JBPM_ENVIRONMENT.set(EnvironmentName.TRANSACTION_MANAGER,
TransactionManagerServices.getTransactionManager());
        JBPM_ENVIRONMENT.set(EnvironmentName.GLOBALS, new
MapGlobalResolver());

        Properties properties = new Properties();
        properties.put("drools.processInstanceManagerFactory",
"org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");
        properties.put("drools.processSignalManagerFactory",
"org.jbpm.persistence.processinstance.JPASignalManagerFactory");
        JBPM_CONFIG =
KnowledgeBaseFactory.newKnowledgeSessionConfiguration(properties);
    }

    ....

    private static StatefulKnowledgeSession createSession() {
        StatefulKnowledgeSession session =
JPAKnowledgeService.newStatefulKnowledgeSession(readKnowledgeBase(),
JBPM_CONFIG, JBPM_ENVIRONMENT);
        session.getWorkItemManager().registerWorkItemHandler("Human Task",
new CommandBasedWSHumanTaskHandler(session));
        return session;
    }

When I load changes from main thread (on startup, for example) everything is
fine, but when I try to reload knowledge base from another thread it falls
with exception ( full stacktrace
<http://drools.46999.n3.nabble.com/file/n4020008/error_log.txt>  ):

    15:00:56,420 ERROR [org.drools.persistence.SingleSessionCommandService]
(Timer-14) Could not commit session: java.lang.NullPointerException
            at
org.drools.persistence.jta.JtaTransactionManager.getStatus(JtaTransactionManager.java:205)
[drools-persistence-jpa-5.4.0.Final.jar:5.4.0.Final]

How can I solve it?

Thank you for your attention. Have a good day!



--
View this message in context: http://drools.46999.n3.nabble.com/Reloading-knowledge-base-from-another-thread-tp4020008.html
Sent from the Drools: User forum mailing list archive at Nabble.com.


More information about the rules-users mailing list