0

Drools ルールに slf4j Logger オブジェクトをグローバルとして渡そうとしています。

呼び出し元の 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] (default task-1) コンテナー「mycontainer」の呼び出し中にエラーが発生しました: java.lang.RuntimeException: グローバルのクラスが不正です。[org.slf4j.Logger] を期待していましたが、[java.util.LinkedHashMap] を見つけました。

LinkedHashMap がどこから取得されているのかわかりません。呼び出しコードをステップ実行しましたが、マップが表示される場所がわかりません。

ルール ファイルのグローバルを LinkedHashMap に変更すると、エラーは発生しません。どういうわけか、Java クラスのロガー オブジェクトが LinkedHashMap に変換されているように見えます。

助けていただければ幸いです。

4

1 に答える 1