Drools 6.1.0 DefaultFactHandle NotSerializable异常

时间:2016-01-28 16:55:57

标签: weblogic drools stateful

我们在Weblogic 12.1.2上运行drools 6.1.0作为无状态EJB 3.0 Bean。当初始化过程中在服务器上创建新实例时,如果服务器上有更多负载,则bean会返回以下异常。

EJB Exception: : java.lang.RuntimeException:         java.io.NotSerializableException: org.drools.core.common.DefaultFactHandle
    at org.drools.core.util.ClassUtils.deepClone(ClassUtils.java:514)
    at     org.drools.core.definitions.impl.KnowledgePackageImpl.deepCloneIfAlreadyInUse(Kn    owledgePackageImpl.java:770)
    at     org.drools.core.definitions.impl.KnowledgePackageImpl.deepCloneIfAlreadyInUse(KnowledgePackageImpl.java:66)
at org.drools.core.impl.KnowledgeBaseImpl.addPackages(KnowledgeBaseImpl.java:722)
at org.drools.core.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:266)
at org.drools.compiler.kie.builder.impl.KieContainerImpl.createKieBase(KieContainerImpl.java:412)
at org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase(KieContainerImpl.java:346)
at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:498)
at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:443)
at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:425)

我们初始化新的有状态会话的代码如下:

protected KieSession kieSession= null;
protected ReleaseId releaseId = null; //fetched by logic to identify the release id>
if(kieSession != null){
    kieSession.dispose();
    kieSession = null;
}
KieServices kServices = KieServices.Factory.get();
KieContainer container = kServices.newKieContainer(this.releaseId);
kieSession = container.newKieSession();

这发生在Stateless Bean的构造函数中。

您能否就解决此问题提出任何建议?

0 个答案:

没有答案