使用Spring MVC Drools Expert

时间:2014-03-21 14:57:38

标签: spring-mvc drools

我正在使用Spring MVC和Drools expert.spring版本4.0.0 drools版本(6.0.1)
我正在使用RAD 8和WAS 8
应用程序无法启动异常(见下文)
弹簧集成在批处理模式下工作正常。当我从Web应用程序调用它时失败 当我将kie后处理器添加到应用程序上下文时,Web应用程序就失败了。

<bean id="kiePostProcessor" 
class="org.kie.spring.KModuleBeanFactoryPostProcessor"/>

这是堆栈跟踪。

  

初始化Spring FrameworkServlet&#39; spring&#39;       [2014年3月21日10:16:11:264] 0000009f DispatcherSer I org.springframework.web.servlet.FrameworkServlet initServletBean FrameworkServlet&#39; spring&#39;:初始化开始   [2014年3月21日10:16:11:265] 0000009f DispatcherSer E org.springframework.web.servlet.FrameworkServlet initServletBean上下文初始化失败                                    显示java.lang.NullPointerException       在java.io.File。(File.java:233)       at org.drools.compiler.kie.builder.impl.ClasspathKieProject.getPomProperties(ClasspathKieProject.java:228)       at org.kie.spring.KModuleBeanFactoryPostProcessor.postProcessBeanFactory(KModuleBeanFactoryPostProcessor.java:95)       在org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:265)       在org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:177)       at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:609)       在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)       在org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:381)       在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:293)       在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)       在com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1680)       在com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:410)       在com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)       在com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:169)       在com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:746)       在com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:634)       在com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:422)       在com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:714)       在com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1160)       at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1369)       在com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:639)       在com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:967)       在com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:766)       在com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplicationDynamically(ApplicationMgrImpl.java:1354)       在com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2150)       在com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:445)       在com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)       在com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:388)       在com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access $ 500(CompositionUnitMgrImpl.java:116)       在com.ibm.ws.runtime.component.CompositionUnitMgrImpl $ 1.run(CompositionUnitMgrImpl.java:663)       在com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:5363)       在com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:5579)       在com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:255)       在com.ibm.ws.runtime.component.CompositionUnitMgrImpl.startCompositionUnit(CompositionUnitMgrImpl.java:677)       在com.ibm.ws.runtime.component.CompositionUnitMgrImpl.startCompositionUnit(CompositionUnitMgrImpl.java:621)       在com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:1246)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)       在java.lang.reflect.Method.invoke(Method.java:611)       at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:49)       at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)       在java.lang.reflect.Method.invoke(Method.java:611)       at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:256)       at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1085)       在javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:966)       at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:848)       at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:773)       在com.ibm.ws.management.AdminServiceImpl $ 1.run(AdminServiceImpl.java:1335)       在com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)       在com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:1228)       在com.ibm.ws.management.application.AppManagementImpl._startApplication(AppManagementImpl.java:1481)       在com.ibm.ws.management.application.AppManagementImpl.startApplication(AppManagementImpl.java:1370)       在com.ibm.ws.management.application.AppManagementImpl.startApplication(AppManagementImpl.java:1319)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)       在java.lang.reflect.Method.invoke(Method.java:611)       at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:49)       at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)       在java.lang.reflect.Method.invoke(Method.java:611)       at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:256)       at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1085)       在javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:966)       at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:848)       at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:773)       在com.ibm.ws.management.AdminServiceImpl $ 1.run(AdminServiceImpl.java:1335)       在com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)       在com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:1228)       在com.ibm.ws.management.connector.AdminServiceDelegator.invoke(AdminServiceDelegator.java:181)       在com.ibm.ws.management.connector.ipc.CallRouter.route(CallRouter.java:247)       在com.ibm.ws.management.connector.ipc.IPCConnectorInboundLink.doWork(IPCConnectorInboundLink.java:360)       在com.ibm.ws.management.connector.ipc.IPCConnectorInboundLink $ IPCConnectorReadCallback.complete(IPCConnectorInboundLink.java:602)       at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)       在com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)       at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)       在com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)       在com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)       在com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)       在com.ibm.io.async.ResultHandler $ 2.run(ResultHandler.java:905)       在com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1690)

2 个答案:

答案 0 :(得分:0)

这是kie-spring模块(6.1.0-FINAL版本)中的缺陷。您应该使用以下依赖项。这解决了我。

<dependency>
   <groupId>org.kie</groupId>
   <artifactId>kie-spring</artifactId>
   <version>6.1.0.Beta1</version>
 </dependency>

答案 1 :(得分:0)

您好我想分享我对此所做的研究 如果有人想使用弹簧mvc和drools与&#34; websphere&#34;这可能很有用 **这仅在您使用maven时才有用 1.将所有dsl和dslr文件复制到maven Web项目中的src / main / resources文件夹 2.将您的kmodule文件放在src / main / webapp / META-INF / kmodule.xml中 3.放置文件src \ main \ webapp \ META-INF \ maven \\ artifactname \ pom.properties
请注意,pom.properties文件应该是包含

的常规maven pom.properties文件
version=<version>  
groupId=<packagename>  
artifactId=<artifactid>  

现在您的网络项目工作正常 以上是解决kie从jar文件中获取dsl和drl文件的问题。 Kie无法从jar文件中读取和处理kmodule.xml文件,因为它不支持wsjar协议。

此外,我没有使用kie-spring集成,因为这给了我很多问题。 希望这可以帮助。测试版也不能在我们的组织中使用。