Когда я создаю таблицу управляемых решений в рабочей среде kie, я получаю исключение нулевого указателя при выполнении сеанса kie без сохранения состояния или состояния. Чтобы быть более конкретным, я использую drools 7 и представляю простой сервис отдыха с Java и Grizzly. Когда я использую простые файлы drl, мои правила запускаются и выполняются правильно, но когда я развертываюсь с таблицей решений внутри моей банки, я получаю NPE.
Java-код:
public CustomerDto executeStatelessPOC(final String param,
final StatelessKieSession kSession ,final KieServices kServices) {
//Myexample is just the entry fact
InputDTO example = new InputDTO();
example.setField1(param);
CustomerDto response = new CustomerDto();
try {
KieCommands kieCommands = kServices.getCommands();
List<Command> cmds = new ArrayList<Command>();
cmds.add(kieCommands.newInsert(example));
cmds.add(kieCommands.newInsert(response, "customerResponse"));
//Execute rules with facts provided before
ExecutionResults results = kSession.execute(kieCommands.newBatchExecution(cmds));
//Get the response as part of the results
response = (CustomerDto) results.getValue("customerResponse");
return response;
} catch (Exception e) {
System.out.println("Exception e: " + e.toString());
System.out.println("Exception e: " + Arrays.toString(e.getStackTrace()));
}
return response;
}
Исходный код таблицы руководящих решений:
package gr.maven.test.testbuildinmaven;
// из номера строки: 1
правило "Строка 1 TestDecisionTable"
диалект "мвел"
когда
Input: InputDTO (field1 == "Test1")
затем
CustomerDto fact0 = new CustomerDto ();
fact0.setCustomerMessage ("yesss");
insertLogical (fact0);
конец
// из номера строки: 2
правило "Строка 2 TestDecisionTable"
диалект "мвел"
когда
Input: InputDTO (field1 == "Test2")
затем
CustomerDto fact0 = new CustomerDto ();
fact0.setCustomerMessage ("yes2");
insertLogical (fact0);
конец
// из номера строки: 3
правило "Строка 3 TestDecisionTable"
диалект "мвел"
когда
Input: InputDTO (field1 == "Test3")
затем
CustomerDto fact0 = new CustomerDto ();
fact0.setCustomerMessage ("yesss");
insertLogical (fact0);
конец
Исключение:
WARNING: The following warnings have been detected: WARNING: Unknown HK2 failure detected:
стек MultiException 1 из 2
java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод)
at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
в java.lang.reflect.Constructor.newInstance (Constructor.java:423)
на org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe (ReflectionHelper.java:1129)
в org.jvnet.hk2.internal.ClazzCreator.createMe (ClazzCreator.java:274)
в org.jvnet.hk2.internal.ClazzCreator.create (ClazzCreator.java:368)
в org.jvnet.hk2.internal.SystemDescriptor.create (SystemDescriptor.java:471)
на org.glassfish.jersey.process.internal.RequestScope.findOrCreate (RequestScope.java:162)
в org.jvnet.hk2.internal.Utilities.createService (Utilities.java:2064)
в org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetService (ServiceLocatorImpl.java:711)
в org.jvnet.hk2.internal.ServiceLocatorImpl.getService (ServiceLocatorImpl.java:653)
в org.glassfish.jersey.internal.inject.Injected.getOrCreate (Injection.java:169)
в org.glassfish.jersey.server.model.MethodHandler $ ClassBasedMethodHandler.getInstance (MethodHandler.java:185)
в org.glassfish.jersey.server.internal.routing.PushMethodHandlerRouter.apply (PushMethodHandlerRouter.java:74)
на org.glassfish.jersey.server.internal.routing.RoutingStage._apply (RoutingStage.java:109)
на org.glassfish.jersey.server.internal.routing.RoutingStage._apply (RoutingStage.java:112)
на org.glassfish.jersey.server.internal.routing.RoutingStage._apply (RoutingStage.java:112)
на org.glassfish.jersey.server.internal.routing.RoutingStage._apply (RoutingStage.java:112)
на org.glassfish.jersey.server.internal.routing.RoutingStage._apply (RoutingStage.java:112)
на org.glassfish.jersey.server.internal.routing.RoutingStage.apply (RoutingStage.java:92)
на org.glassfish.jersey.server.internal.routing.RoutingStage.apply (RoutingStage.java:61)
на org.glassfish.jersey.process.internal.Stages.process (Stages.java:197)
на org.glassfish.jersey.server.ServerRuntime $ 2.run (ServerRuntime.java:297)
на org.glassfish.jersey.internal.Errors $ 1.call (Errors.java:271)
на org.glassfish.jersey.internal.Errors $ 1.call (Errors.java:267)
на org.glassfish.jersey.internal.Errors.process (Errors.java:315)
на org.glassfish.jersey.internal.Errors.process (Errors.java:297)в org.glassfish.jersey.internal.Errors.process (Errors.java:267) в org.glassfish.jersey.process.internal.RequestScope.runInScope (RequestScope.java:317) в org.glassfish.jersey.server.ServerRuntime.process (ServerRuntime.java:288) в org.glassfish.jersey.server.ApplicationHandler.handle (ApplicationHandler.java:1110) в org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service (GrizzlyHttpContainer.java).org.glassfish.grizzly.http.server.HttpHandler $ 1.run (HttpHandler.java:219) в org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.doWork (AbstractThreadPool.java:565) в org.glassfish.grizzly..AbstractThreadPool $ Worker.run (AbstractThreadPool.java:545) в java.lang.Thread.run (Thread.java:748) Вызывается:(KnowledgeBuilderImpl.java:411) в org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl $ ResourceToPkgDescrMapper.lambda $ static6 долларов СШАпо адресу org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.buildPackages (CompositeKnowledgeBuilderImpl.java:109) по адресу org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.buildr..builder.impl.AbstractKieProject.buildKnowledgePackages (AbstractKieProject.java:247) в org.drools.compiler.kie.builder.impl.AbstractKieModule.createKieBase (AbstractKieModule.java:210) в org.drools.pile..KieContainerImpl.createKieBase (KieContainerImpl.java:389) в org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase (KieContainerImpl.java:357) в org.drools.compdernie.In (KieContainerImpl.java:550) в org.drools.compiler.kie.builder.impl.KieContainerImpl.newStatelessKieSession (KieContainerImpl.java:460) в org.drools.compiler.kie.builder.impl.KieContainIIIJava: 455) at com.mycompany.grizzlypoc.rest.services.StatelessService. (StatelessService.java:37) ... ... еще 37 стек MultiException 2 из 2 java.lang.IllegalStateException: Невозможно выполнить операцию: создать на com.mycompany.grizzlypoc.rest.services.StatelessService в org.jvnet.hk2.internal.ClazzCreator.create (ClazzCreator.java:395) в org.jvnet.hk2.internal.SystemDescriptor.create (SystemDescriptor.java:471) в или.jersey.process.internal.RequestScope.findOrCreate (RequestScope.java:162) в org.jvnet.hk2.internal.Utilities.createService (Utilities.java:2064) в org.jvnet.hk2.internal.ServiceLocatorImpl.lternalLet.java: 711) в org.jvnet.hk2.internal.ServiceLocatorImpl.getService (ServiceLocatorImpl.java:653) в org.glassfish.jersey.internal.inject.Injection.getOrCreate (Injection.java:169) в org.glassfish.jersey.server.model.MethodHandler $ ClassBasedMethodHandler.getInstance (MethodHandler.java:185) в org.glassfish.jersey.server.internal.routing.PushMethodHandlerRouter.apply (PushMethodHandlerRouter.java:74) в org.glassfish.jersey.server.internal.routing.RoutingStage._apply (RoutingStage.java:109) в org.glassfish.jersey.serout.outing.r._apply (RoutingStage.java:112) в org.glassfish.jersey.server.internal.routing.RoutingStage._apply (RoutingStage.java:112) в org.glassfish.jersey.server.internal.routing.RoutingStage._apply (RoutingStage.Java: 112)на org.glassfish.jersey.server.internal.routing.RoutingStage._apply (RoutingStage.java:112)
на org.glassfish.jersey.server.internal.routing.RoutingStage.apply (RoutingStage.java:92)
на org.glassfish.jersey.server.internal.routing.RoutingStage.apply (RoutingStage.java:61)
на org.glassfish.jersey.process.internal.Stages.process (Stages.java:197)
на org.glassfish.jersey.server.ServerRuntime $ 2.run (ServerRuntime.java:297)
на org.glassfish.jersey.internal.Errors $ 1.call (Errors.java:271)
на org.glassfish.jersey.internal.Errors $ 1.call (Errors.java:267)
на org.glassfish.jersey.internal.Errors.process (Errors.java:315)
на org.glassfish.jersey.internal.Errors.process (Errors.java:297)
на org.glassfish.jersey.internal.Errors.process (Errors.java:267)
на org.glassfish.jersey.process.internal.RequestScope.runInScope (RequestScope.java:317)
в org.glassfish.jersey.server.ServerRuntime.process (ServerRuntime.java:288)
на org.glassfish.jersey.server.ApplicationHandler.handle (ApplicationHandler.java:1110)
на org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service (GrizzlyHttpContainer.java:381)
на org.glassfish.grizzly.http.server.HttpHandler $ 1.run (HttpHandler.java:219)
на org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.doWork (AbstractThreadPool.java:565)
на org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.run (AbstractThreadPool.java:545)
at java.lang.Thread.run (Thread.java:748)