JBoss - 如何以编程方式加载jar? KieSession为NULL

时间:2017-03-07 20:43:50

标签: java jboss kie

我有一个jar文件,来自Windows命令行可以通过' java -jar myTest.jar'动态加载来自不同路径位置的两个jar。其中一个jar包含我的.drl文件和kmodule.xml。 jar从命令行成功运行,如日志所示。

[main] INFO org.drools.compiler.kie.builder.impl.ClasspathKieProject - Found kmodule: jar:file:/C:/BPMPOC/rules/target/rules-0.0.1.jar!/META-INF/kmodule.xml
[main] INFO org.drools.compiler.kie.builder.impl.KieRepositoryImpl - KieModule was added: ZipKieModule[releaseId=org.krtest:rules:0.0.1,file=C:\BPMPOC\rules\target\rules-0.0.1-SNAPSHOT.jar]
I am in Rule1!
I am in Rule2!

但是,在将同一个jar复制到我的JBoss部署文件夹并执行standalone.bat后,我的KieSession为NULL。我从以下代码行创建了KieSession:

KieSession ksession = kc.newKieSession("HelloWorldKS");

我尝试了多种动态加载jar文件的方法。每个都可以从命令行成功运行,但在部署到JBoss时则不行。

根据要求添加以下内容:

kmodule.xml

<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.drools.org/xsd/kmodule">
  <kbase name="HelloWorldKB" packages="org.krtest.rules.helloworld">
    <ksession name="HelloWorldKS"/>
  </kbase>
</kmodule>

初始化代码

KieServices ks = KieServices.Factory.get();
KieContainer kc = ks.getKieClasspathContainer(DroolsTest.class.getClassLoader());
KieSession ksession = kc.newKieSession("HelloWorldKS");

0 个答案:

没有答案