1

DroolsGuvnorにアクセスするために次のコードを使用しています。

KnowledgeAgentConfiguration kaconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("MyAgent", kaconf);
kagent.applyChangeSet(ResourceFactory.newClassPathResource("drools/change-set.xml"));
StatefulKnowledgeSession ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();

残念ながら、クラスはエージェントプロバイダーのロードKnowledgeAgentFactoryに使用するため、OSGIに対応していないようです。ナレッジAPIバンドルに常駐し、drools-coreバンドルのプロバイダー実装に存在します。明らかに、knowledge-apiはOSGIコンテナーにdrools-coreを認識しません。その結果、次の例外が発生します。Class.forName()KnowledgeAgentFactory

Caused by: java.lang.RuntimeException: Provider org.drools.agent.impl.KnowledgeAgentProviderImpl could not be set.
    at org.drools.agent.KnowledgeAgentFactory.loadProvider(KnowledgeAgentFactory.java:191)[162:org.drools.api:5.5.0.Final]
    at org.drools.agent.KnowledgeAgentFactory.getKnowledgeAgentProvider(KnowledgeAgentFactory.java:178)[162:org.drools.api:5.5.0.Final]
    at org.drools.agent.KnowledgeAgentFactory.newKnowledgeAgentConfiguration(KnowledgeAgentFactory.java:129)[162:org.drools.api:5.5.0.Final]

この問題の回避策はありますか?

4

1 に答える 1

0

require-bundleマニフェストエントリはこれらのインポートでは正しく機能しないように見えるので、役立つかもしれません。その時点で、そのように機能させるのがおそらく最善だと思います。

必須-osgiwikiで定義されているバンドル

于 2012-12-29T08:32:44.433 に答える