Я пытаюсь передать объект Logf slf4j в мое правило Drools как глобальное.
В своем вызывающем классе Java я определяю регистратор и передаю его правилу с помощью команды setGlobal kie server:
private static final Logger LOGGER = LoggerFactory.getLogger(KieServerTester.class);
Command<?> setGlobalCommand = commandsFactory.newSetGlobal("logger", LOGGER);
commands.add(setGlobalCommand);
И в моем файле правил глобальное значение определено как:
global org.slf4j.Logger logger;
Однако, когда я выполняю команду, я получаю эту ошибку:
ERROR [org.kie.server.services.drools.DroolsKieContainerCommandServiceImpl] (задание по умолчанию-1) Ошибка при вызове контейнера «mycontainer»: java.lang.RuntimeException: недопустимый класс для глобальных. Ожидается [org.slf4j.Logger], найдено [java.util.LinkedHashMap].
Понятия не имею, откуда он получает LinkedHashMap. Я прошел через вызывающий код, но не вижу, где отображается карта.
Если я изменю свой глобальный объект в файле правил на LinkedHashMap, я не получу сообщение об ошибке. Так что как-то похоже, что мой объект логгера в Java-классе преобразуется в LinkedHashMap.
Любая помощь приветствуется, спасибо.