`
流浪鱼
  • 浏览: 1682328 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Stateful和Stateless区别

 
阅读更多

规则编译完成之后,接下来就需要使用一个API 使编译好的规则包文件在规则引擎当中运行起来。在Drools5 当中提供了两个对象与规则引擎进行交互:StatefulKnowledgeSessionStatelessKnowledgeSession


StatefulKnowledgeSession 对象是一种最常用的与规则引擎进行交互的方式,它可以与规则引擎建立一个持续的交互通道,在推理计算的过程当中可能会多次触发同一数据集。在用户的代码当中,最后使用完StatefulKnowledgeSession 对象之后,一定要调用其dispose()方法以释放相关内存资源。StatefulKnowledgeSession 可以接受外部插入(insert)的业务数据——也叫fact,一个fact 对象通常是一个普通的Java的POJO,一般它们会有若干个属性,每一个属性都会对应
getter 和setter 方法,用来对外提供数据的设置与访问。一般来说,在Drools 规则引擎当中,fact所承担的作用就是将规则当中要用到的业务数据从应用当中传入进来,对于规则当中产生的数据及状态的变化通常不用fact 传出。如果在规则当中需要有数据传出,那么可以通过
在StatefulKnowledgeSession 当中设置global 对象来实现,一个global 对象也是一个普通的Java 对象,在向StatefulKnowledgeSession 当中设置global 对象时不用insert 方法而用setGlobal 方法实现。

StatelessKnowledgeSession 的作用与StatefulKnowledgeSession 相仿,它们都是用来接收业务数据、执行规则的。事实上,StatelessKnowledgeSession 对StatefulKnowledgeSession 做了包装,使得在使用StatelessKnowledgeSession 对象时不需要再调用dispose()方法释放内存资源了。
因为StatelessKnowledgeSession 本身所具有的一些特性,决定了它的使用有一定的局限性。在使用StatelessKnowledgeSession 时不能进行重复插入fact 的操作、也不能重复的调用fireAllRules()方法来执行所有的规则,对应这些要完成的工作在StatelessKnowledgeSession当中只有execute(…)方法,通过这个方法可以实现插入所有的fact 并且可以同时执行所有的规则或规则流,事实上也就是在执行execute(…)方法的时候就在StatelessKnowledgeSession内部执行了insert()方法、fireAllRules()方法和dispose()方法。

分享到:
评论

相关推荐

    有状态stateful与无状态stateless地址转换.docx

    有状态(stateful)和无状态(stateless)地址转换技术的主要区别在于XLAT是否需要记录地址转换前后的映射情况。有状态(stateful)地址转换技术需要XLAT记录用户转换时的session信息(映射表),而无状态(stateless)地址...

    trex_client_v2.97 官网最新版

    TRex是⼀款开源的发包⼯具,它跑在标准的intel处理芯⽚上,同时⽀持stateful和 stateless模式,stateful可以描述L4~L7层的应⽤场景,⽽stateless主要⽤来进⾏定制包的发包 TRex 功能性能 stateful ⽀持⾼达200Gb/s的...

    Stateful--sessionbean.zip_sessionBean_stateful

    有状态会话Bean(Stateful Session Bean,SFSB)与无状态会话Bean(Stateless Session Bean, SLSB)的主要区别在于它们如何维护与客户端之间的交互状态。SLSB不存储任何关于客户端的信息,每次方法调用都是独立的,...

    TRex使用说明1

    它提供了强大的功能和性能,同时支持stateful和stateless两种模式,以满足不同测试需求。TRex的独特之处在于其开源特性,可以作为昂贵商业仪表的替代品,尤其适合路由器厂商进行性能评估。 1. **TRex基本介绍** ...

    全网最全flutter学习案例仿闲鱼开源版

    Stateful和Stateless Widgets分别用于处理状态变化和不处理状态变化的组件。BuildContext用于在Widget树中传递信息,而InheritedWidget则提供了一种有效的方式为子Widget提供数据。 接着,你会接触到Flutter的布局...

    EJB的编程规则之Session Bean

    **Stateful和Stateless Session Bean的选择** 1. **Stateful Session Bean** - **状态维护**:Stateful Session Bean设计用于保持客户端的状态,表现出非持久存储的对象,以及商业对象之间的工作流程。 - **应用...

    N-tier架构的基本设计模式

    综上所述,N-tier架构的基本设计模式强调了层次间的分离和协作,以及在Stateful和Stateless对象之间找到平衡,以构建高效且健壮的企业级信息系统。通过理解和应用这些模式,开发者能够创建出更稳定、可扩展和易于...

    trex_stateless.pdf

    文档中提到,可以使用状态无感知模式来模拟有状态(stateful)模式,这通常在进行网络设备和应用的性能测试时非常关键。 手册接着介绍了TRex的包文件夹结构,以及如何通过不同的教程开始使用TRex,包括如何配置TRex...

    java面试题精选

    并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。 SessionBean在J2EE应用程序中被用来完成...

    java常见的面试题目

    【Java面试常见问题详解】 Java 是企业级应用开发的重要语言,尤其在面试中,EJB...同时,理解EJB的内部机制和优化策略,如Stateful与Stateless Session Bean的选择,将展示出你对性能调优的理解和实践能力。

    J2EE面试题集锦,面试题,想应聘JAVA类

    - Stateful Session Bean与Stateless Session Bean的主要区别在于是否保持与客户端的状态关联,Stateful Session Bean适合需要跟踪用户状态的场景,而Stateless Session Bean适用于无状态的业务逻辑,效率较高。...

    N-tier架构的进阶设计模式(DesignPattern)──Stateless与Stateful对象携手合作

    在「N-tier架构的基本模式」文章里,已经介绍5个基本的模式了。该文也强调:学习这些基本模式时,也必须学习如何修正它们,以便迅速落实于您的特殊新环境中,才算学以致用! 于是,本文就基于该5个模式而继续推演出...

    笔试题2007

    Session Bean主要处理业务逻辑,Entity Bean则与数据存储密切相关,Stateful Session Bean和Stateless Session Bean主要区别在于是否保存客户端的状态,这影响了内存使用和并发性能。 以上就是【笔试题2007】涉及的...

    百度 迅雷各大公司面试题目

    8. **Stateful Session Bean与Stateless Session Bean的区别** - Stateful Session Bean保存了客户端的状态,每个客户端通常对应一个实例,能记住之前的交互信息。 - Stateless Session Bean不保存客户端状态,...

    QuartzDemo

    在QuartzDemo中,我们可能还会看到如何处理Job的实例化,有两种模式:Stateful和Stateless。Stateful Job在每次触发时都会创建新的实例,保持状态,而Stateless Job则使用单个实例服务于所有触发器,不保存状态。 ...

    计算机二级java资料.pdf

    EJB技术中的Session Bean是被广泛使用的组件类型之一,它被分为Stateful和Stateless两种。Stateful Session Bean保留了客户端的状态,而Stateless Session Bean则不保留任何状态。在文档中,“ShoppingCartBean”类...

    JAVA面试题目大汇总

    - SessionBean处理客户端会话,分为Stateful和Stateless两种。 - Stateful Session Bean保持与客户端的会话状态,记住客户信息。 - Stateless Session Bean不保存状态,每次调用独立,效率较高。 - EntityBean...

Global site tag (gtag.js) - Google Analytics