当我们在pom.xml上使用spring-boot-devtools时,drools规则不起作用。没有错误,但drools规则根本不会被解雇。排除spring-boot-devtools之后,drools规则开始工作。
发布于 2019-04-04 15:20:12
确实是个很奇怪的问题。据我所知,这里有两个问题:
org.springframework.boot.devtools.restart.classloader.RestartClassLoader的配合不是很好。即使我尝试将DRL作为字符串传递,它也不接受。kmodule.xml文件获取填充的KieBase,规则仍然不会触发。我的猜测是,类加载器在某些时候更改了类的定义,因此当您插入Product对象时,它的类不再与DRL正在使用的Product类相同。另一种可能是有多个类加载器在起作用。看看this question和this document.不幸的是,我没能找到一种让它工作的方法。我希望我提供的信息对你有帮助。
发布于 2019-05-14 00:44:42
在将spring-boot devtools与drools一起使用时,有一个关于类加载问题的文档:DROOLS-1540
正如spring-boot reference documentation中所指定的,您可以将jars添加到devtools“重新加载”类加载器中作为变通方法。
META-INF/spring-devtools.properties
restart.include.drools-core=/drools-core-7.0.0.Final.jar
restart.include.drools-compiler=/drools-compiler-7.0.0.Final.jar
restart.include.kie-api=/kie-api-7.0.0.Final.jar
restart.include.kie-ci=/kie-ci-7.0.0.Final.jar
restart.include.kie-internal=/kie-internal-7.0.0.Final.jar请谨慎使用您的exacts jar,并最终添加规则文件中直接引用的其他库。
(对于版主)将Drools rule does't working in Spring Boot Controller but working in Junit Test标记为此问题的副本,并删除了该帖子上的答案
https://stackoverflow.com/questions/55373809
复制相似问题