如何配置在使用Spring重新启动服务器(tomcat)时重新加载drools知识会话
我正在使用drools server 5.5 Final with Spring来配置知识会话以持久化到数据库(mysql),并期望它在服务器(tomcat)重新启动时重新加载会话。 代码片段如下所示如何配置在使用Spring重新启动服务器(tomcat)时重新加载drools知识会话,spring,session,drools,Spring,Session,Drools,我正在使用drools server 5.5 Final with Spring来配置知识会话以持久化到数据库(mysql),并期望它在服务器(tomcat)重新启动时重新加载会话。 代码片段如下所示 <drools:resource-change-scanner id="s1" interval="5" enabled="true" /> <drools:grid-node id="node1"/> <drools:kagent id="kagent1" k
<drools:resource-change-scanner id="s1" interval="5" enabled="true" />
<drools:grid-node id="node1"/>
<drools:kagent id="kagent1" kbase="kbase1" new-instance="false">
<drools:resources>
<drools:resource type="DRL" source="file:///tmp/test.drl"/>
</drools:resources>
</drools:kagent>
<drools:kbase id="kbase1" node="node1">
</drools:kbase>
<drools:ksession id="ksession1" type="stateful" kbase="kbase1" node="node1">
<drools:configuration>
<drools:jpa-persistence>
<drools:transaction-manager ref="txManager" />
<drools:entity-manager-factory ref="myEmf" />
</drools:jpa-persistence>
</drools:configuration>
</drools:ksession>
我可以看到每次Tomcat重启时,它都会将会话信息插入Mysql
如果会话之前已被持久化,如何配置从数据库重新加载会话?最后,我们碰巧看到KnowledgeSessionDefinitionParser的src代码 将解析spring配置文件 在代码中,它将获得'load'属性的值,并用作要重新加载的sessionId。因此,我们测试了添加load=“sessionId”,可以重新加载。但如果将sessionId配置为数据库中不存在的数字,它将抛出异常
<drools:ksession id="ksession1" type="stateful" kbase="kbase1" node="node1">
<drools:configuration>
<drools:jpa-persistence load="42011">
<drools:transaction-manager ref="txManager" />
<drools:entity-manager-factory ref="myEmf" />
</drools:jpa-persistence>
</drools:configuration>
</drools:ksession>
对于一个实际的应用程序,不可能知道sessionId何时进行src配置,也没有发现drools为我们提供了任何预先设置sessionId的方法
那么这是正确的解决方案吗?
有谁有先进的见解吗?啊。。。您正在使用Drools Spring XML配置文件。它非常基本,我发现它很麻烦(例如依赖于旧版本的Spring)。我发现使用Drools Java API创建知识库和会话更容易。这样我就可以使用Spring来正确地管理事物。@Steve如果使用API来创建知识库和知识会话,其他人使用Spring,那么如何将API和Spring方式结合起来?有没有示例?Drools Spring XML配置所做的就是在幕后创建Spring管理的bean。相反,您可以使用
@Bean
方法创建一个Spring@Configuration
类,该方法使用API创建知识库、知识代理等。这相当不完整,但我一直在构建一个会话范围服务和Drools 6.x.x的示例:github.com/gratiartis/qzr