我们已经使用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
答案 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 文件中定义需求本地和远程存储库。