使用Tomcat的设置Drool中的“ java.lang.RuntimeException:找不到KieModule”

时间:2019-09-14 17:42:39

标签: tomcat drools rule-engine

我们已经使用Tomcat 8.0设置并部署了Drool 7.15应用程序。但是,问题是当我们尝试部署规则时,我们遇到了以下异常。 java.lang.RuntimeException: Cannot find KieModule: com.tisl.mpl.ruleengine:rrt-kjar:1.0.0

该如何解决?同一罐子在Wildfly(jBOSS)中运行正常

  

2019年9月14日18:24:06.510严重[http-nio-8080-exec-8] org.kie.server.services.impl.KieServerImpl.createContainer错误   为模块创建容器“ RRTRULE”   'com.tisl.mpl.ruleengine:rrt-kjar:1.0.0'               java.lang.RuntimeException:找不到KieModule:com.tisl.mpl.ruleengine:rrt-kjar:1.0.0                       在org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:117)                       在org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:111)                       在org.kie.server.services.impl.KieServerImpl.createContainer(KieServerImpl.java:214)                       在org.kie.server.remote.rest.common.resource.KieServerRestImpl.createContainer(KieServerRestImpl.java:90)                       在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处                       在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)                       在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)                       在java.lang.reflect.Method.invoke(Method.java:498)                       在org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:168)                       在org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)                       在org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)                       在org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216)                       在org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:541)                       在org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523)                       在org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125)                       在org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)                       在org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)                       在org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)                       在javax.servlet.http.HttpServlet.service(HttpServlet.java:741)                       在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)                       在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)                       在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)                       在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)                       在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)                       在org.kie.server.services.impl.security.web.CaptureHttpRequestFilter.doFilter(CaptureHttpRequestFilter.java:42)                       在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)                       在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)                       在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)                       在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)                       在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:645)                       在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)                       在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)                       在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)                       

     

org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)                   在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)                   在org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)                   在org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)                   在org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:810)                   在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1498)                   在org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)                   在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)                   在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)                   在org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)                   在java.lang.Thread.run(Thread.java:748)

-Ram

4 个答案:

答案 0 :(得分:2)

您面临的错误有多种可能的解释。

1)类路径上缺少kie-ci库   -要解决此问题,您需要将其声明为Maven依赖项(或以其他任何方式将其与您的应用捆绑在一起)

2)您在ReleaseId中打了一个错字,而带有以下GAV的KJAR确实不存在:com.tisl.mpl.ruleengine:rrt-kjar:1.0.0

3)KJAR确实存在,但您对settings.xml的配置有误-即,它缺少上传KJAR的远程存储库(或代理等)的配置

4)您的settings.xml已正确配置,但没有存储在默认位置〜/ .m2 / settings.xml中。如果是这种情况,则需要设置系统属性kie.maven.settings.custom并将其配置为settings.xml的位置。即./start.sh -Dkie.maven.settings.custom = / opt / kie / settings.xml

我已经在Drools担任了6年的支持工程师,这一直是上面的其中之一。

答案 1 :(得分:0)

另一个问题可能是服务器没有权限/没有足够的磁盘空间来执行mvn install并在本地maven存储库上创建kjar。 我见过做部署/容器的管道,但由于报告的问题而失败。我们在日志和/或管道堆栈上看不到任何错误。 请检查本地存储库中是否有该kjar maven工件

答案 2 :(得分:0)

当kjar模块(在本例中为'com.tisl.mpl.ruleengine:rrt-kjar:1.0.0')不在/opt/jboss/.m2/repository文件夹中时,这发生在我身上。 因此,请确保您具有这样的树结构: /opt/jboss/.m2/repository/com/tisl/mpl/ruleengine/rrt-kjar/1.0.0 /

在此文件夹中,您应该有两个文件:rrt-kjar-1.0.0.jar和rrt-kjar-1.0.0.pom

答案 3 :(得分:0)

最重要的是 kie-server 和 Wildfly(business-central) 都应该访问部署了 KieModule 的同一个存储库。 如果它们在不同的机器上运行,您可以创建一个远程存储库,或者如果它们由同一台机器上的不同用户运行,那么您应该在 kie-server 服务所有者的“.m2”目录中创建一个 settings.xml 文件。

您应该在 settings.xml 文件中定义需求本地和远程存储库。