DRL中的Drools全局记录器-全局日志的非法类

DRL中的Drools全局记录器-全局日志的非法类,drools,kie,drools-kie-server,kie-server,Drools,Kie,Drools Kie Server,Kie Server,我正在尝试将slf4j Logger对象作为全局对象传递给Drools规则 在调用Java类中,我定义了记录器,并通过setGlobal kie server命令将其传递给规则: private static final Logger LOGGER = LoggerFactory.getLogger(KieServerTester.class); Command<?> setGlobalCommand = commandsFactory.newSetGlobal("logger",

我正在尝试将slf4j Logger对象作为全局对象传递给Drools规则

在调用Java类中,我定义了记录器,并通过setGlobal kie server命令将其传递给规则:

private static final Logger LOGGER = LoggerFactory.getLogger(KieServerTester.class);

Command<?> setGlobalCommand = commandsFactory.newSetGlobal("logger", LOGGER);
    commands.add(setGlobalCommand);
但是,当我执行命令时,会出现以下错误:

错误[org.kie.server.services.drools.DroolsKieContainerCommandServiceImpl](默认任务-1)调用容器“mycontainer”时出错:java.lang.RuntimeException:全局的非法类。应为[org.slf4j.Logger],找到[java.util.LinkedHashMap]

我不知道LinkedHashMap是从哪里来的。我已通过调用代码,但看不到地图显示的位置

如果我将规则文件中的全局更改为LinkedHashMap,则不会出现错误。 因此,Java类中的logger对象似乎正在转换为LinkedHashMap


感谢您的帮助。

您不能将任何您想要的对象传递给Kie服务器。我假设您正在使用REST与Kie服务器通信,在这种情况下,对象必须在您端序列化,并在Kie服务器端反序列化。 我猜Kie服务器无法反序列化您传递的对象,它只是将其作为
映射


希望能有所帮助,

从我所读到的内容来看,slf4j记录器可以序列化(尽管它们没有实现可序列化,所以这可能就是问题所在)。不过,我已经阅读了一些资料,表明应该可以将sl4fj记录器传递给规则。这里的问题是我使用KIE服务器而不是通过KIE会话设置全局吗?在KIE服务器类路径中有Logger类吗?
global org.slf4j.Logger logger;