出于性能考虑,我们尝试重新使用相同的KieBase对象来为针对相同规则集的每个规则调用生成新的KieSession。Everthingyth运行良好,直到一段时间后,突然,从缓存的kieBase新创建的kieSession停止触发它应该触发的规则。
但是一旦我们摆脱了缓存的kieBase并重新创建了一个新的kieBase和新的kieSession,它就会再次开始工作。
我们的理解是,kieBase对象不保存特定于会话的数据。但该行为似乎表明缓存的kieBase会随着时间的推移而被篡改。
我们使用的版本是6.3.0。最终的
对此的任何提示都将不胜感激。
我也有这个问题。在快速连续创建20个会话后,第21个会话会在此规则中将ClassCastException抛出给BigDecimal,即使在前20个会话上运行没有:
rule IsMaterialChange_TotalMonthlyIncomeAmountUpdate when
Data("TOT_MO_INCM_AMT-ORIGINAL_VALUE"; $originalTotalMonthlyIncomeAmount : value)
Data("TOTALMONTHLYINCOMEAMOUNT"; (BigDecimal) value != (BigDecimal) $originalTotalMonthlyIncomeAmount)
then
insert(new IsMaterialChange("TotalMonthlyIncomeAmountUpdate", true));
end
在深入研究了一下后,我找到了这个指向即时编译器的答案。它的默认阈值为20,这与我的问题完全一致。出于某种原因,即时编译器在转换此值时存在问题。
我禁用了JIT编译器,如下所示:
KieContainer kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId());
KieBaseConfiguration kieBaseConfiguration = kieServices.newKieBaseConfiguration();
// Disable JIT Compiler to prevent ClassCastException BigDecimal
kieBaseConfiguration.setOption(ConstraintJittingThresholdOption.get(-1));
KieBase kieBase = kieContainer.newKieBase(loaderKey, kieBaseConfiguration);
问题内容: Internet Explorer 11(Windows 7构建)中的对象包含某些函数的字符串表示形式,而不是您期望的本机调用。 这只能用原始的JavaScript破坏,而JSFiddle这样的网站对此代码没有问题,但是我怀疑是因为有适当的polyfill对其进行了纠正。 以以下HTML页面代码为例: 这在我安装的所有浏览器(IE11除外)中都可以很好地工作。第一行’ SCRIPT50
问题内容: 我使用Eclipse在Windows 7中创建了一个jar文件。当我尝试打开jar文件时,它说jar文件无效或损坏。谁能建议我为什么jar文件无效? 问题答案: 当您在Windows资源管理器中双击一个JAR文件时,会发生这种情况,但是JAR本身实际上不是 可执行的 JAR。真正的可执行JAR至少应具有带有方法的类,并在中引用它。 在Eclispe中,您需要将项目导出为 Runnabl
问题内容: 一些背景: 在使用Macports的Mac OS X 10.6上,我已经DYLD_LIBRARY_PATH在.bash_profile中进行了设置。 问题: 运行时出现java -version此错误: VM初始化期间发生错误 无法加载本机库:libjava.jnilib 通过一个有用的论坛线程,我发现问题是由于设置了’/ opt / local / lib’目录中的某些文件而导致了麻
问题内容: 有些人认为这样做存在一些缺陷,即使正确使用也无法保护您的查询。 带一些化石的物品作为证明。 因此,问题是:mysql [i] _real escape_string()完全不可接受吗? 还是仍然可以使用此功能来创建自己的预备语句? 请提供校对码。 问题答案: 从MySQL的C API函数描述 : 如果需要更改连接的字符集,则应使用函数而不是执行(或)语句。的工作方式类似,但也会影响所使
问题内容: 我最近在Mac上安装了许多点文件以及其他一些应用程序(我改为使用iTerm代替Terminal,将Sublime设置为默认文本编辑器),但此后,尽管它们的文件夹位于.virtualenvs中,但我所有的虚拟环境都停止了工作仍然在那里,每当我尝试在其中运行任何命令时,它们都会给出以下错误: 我已经删除了所有与dotfiles相关的文件,并将.bash_profile还原到以前的状态,但是
我正在使用java中的Apache poi库生成excel报表。 为了生成excel报表,我正在读取使用管道分隔的文本文件,并将其写入excel表单中。 有人对此有什么建议吗。读写时是否有内存问题。文件是逐行读取,逐页写入。