78.3. KIE 会话池
在有大量 KIE 运行时数据和高系统活动的用例中,可能会创建并经常发生 KIE 会话。KIE 会话的大量消耗并非总是消耗时间,但当重复电池时,该过程可能会成为瓶颈,需要大量清理工作。
对于这些高容量情况,您可以使用 KIE 会话池,而不是多个单独的 KIE 会话。要使用 KIE 会话池,您可以从 KIE 容器获取 KIE 会话池,定义池中 KIE 会话的初始数量,并照常从该池中创建 KIE 会话:
KIE 会话池示例
// Obtain a KIE session pool from the KIE container KieContainerSessionsPool pool = kContainer.newKieSessionsPool(10); // Create KIE sessions from the KIE session pool KieSession kSession = pool.newKieSession();
// Obtain a KIE session pool from the KIE container
KieContainerSessionsPool pool = kContainer.newKieSessionsPool(10);
// Create KIE sessions from the KIE session pool
KieSession kSession = pool.newKieSession();
在本例中,KIE 会话池从 10 KIE 会话开始,但您可以指定您需要的 KIE 会话数量。这个整数值是仅初始在池中创建的 KIE 会话数。如果正在运行的应用程序需要,池中的 KIE 会话数量可能会动态增长超过该值。
定义了 KIE 会话池后,下次使用 KIE 会话,并经常调用 dispose ()
,则 KIE 会话会被重置并推送回池,而不是被销毁。
KIE 会话池通常适用于有状态 KIE 会话,但 KIE 会话池也可以影响您与多个 execute ()
调用重复使用的无状态 KIE 会话。当您直接从 KIE 容器创建无状态 KIE 会话时,KIE 会话将继续在内部为每个 execute ()
调用创建一个新的 KIE 会话。相反,当您从 KIE 会话池中创建无状态 KIE 会话时,KIE 会话内部只使用池提供的特定 KIE 会话。
使用 KIE 会话池完成后,您可以调用 shutdown ()
方法以避免内存泄漏。或者,您可以在 KIE 容器上调用 dispose ()
来关闭从 KIE 容器创建的所有池。