首页 > 其他分享 >SBB对象和SBB实体的区别

SBB对象和SBB实体的区别

时间:2024-09-23 19:24:56浏览次数:10  
标签:容器 持久 区别 对象 实体 SLEE SBB

在 JAIN SLEE(Java 服务逻辑执行环境)中,SBB(Service Building Block)对象SBB 实体 是两个相关但不同的概念,理解这两者的区别对掌握 SLEE 中的服务逻辑执行至关重要。

1. SBB 实体 是什么?

SBB 实体 是 SBB 组件的一个持久化实例。它表示了一个具体的业务逻辑处理单元,通常与特定的服务实例或用户会话相关。SBB 实体具有以下特征:

  • 持久化:SBB 实体的状态可以被持久化(存储到数据库或内存中),这意味着它们可以跨越不同的会话和事件进行恢复。
  • 生命周期管理:SBB 实体的创建、激活、挂起、移除等都受到 SLEE 容器的管理。容器负责在合适的时间创建和销毁 SBB 实体,并在需要时恢复其状态。
  • 唯一标识:每个 SBB 实体都有一个唯一标识符,可以通过这个标识符来引用和恢复实体的状态。

简单来说,SBB 实体 是 SLEE 容器管理的持久化服务逻辑的实例。

2. SBB 对象 是什么?

SBB 对象 是 SBB 实体在内存中的一个瞬时表现形式,是 SLEE 容器用于处理事件的临时对象。SBB 对象有以下特点:

  • 非持久化:SBB 对象的状态只存在于内存中,并不会被持久化。它是短暂的,只在处理某个特定事件时才会被创建。
  • 无状态对象:SBB 对象通常是无状态的,因为它只是一个处理事件的容器,而不是存储业务数据的地方。真正的业务数据和状态存储在持久化的 SBB 实体中。
  • 多实例复用:为了优化性能,SBB 对象的实例通常会被 SLEE 容器池化和复用。这意味着多个不同的 SBB 实体可能会使用相同的 SBB 对象来处理事件。

简单来说,SBB 对象 是 SBB 实体的临时载体,负责在处理事件时将持久化的 SBB 实体的逻辑带到内存中执行。

3. SBB 实体与 SBB 对象的关系

  • SBB 实体 是持久化的,有明确的生命周期,并且与特定的业务逻辑和状态绑定。
  • SBB 对象 是短暂的、内存中的一个表现形式,用于处理事件时加载 SBB 实体的数据和逻辑。

当一个事件发生时,SLEE 容器会从存储中找到相应的 SBB 实体,然后为该实体创建或复用一个 SBB 对象,将实体的数据加载到该对象中进行事件处理。

4. 例子说明:SBB 实体与 SBB 对象的工作机制

假设你有一个电话呼叫管理服务,处理电话呼叫开始和结束的事件。对于每个呼叫,SLEE 容器会创建一个对应的 SBB 实体 来跟踪这个呼叫的状态。

  • 当一个新的呼叫事件发生时,SLEE 容器会创建一个 SBB 实体来代表这个呼叫,并且将呼叫的相关信息存储在实体中(比如呼叫的开始时间、双方参与者等)。
  • 当新的事件到达(例如呼叫结束事件),SLEE 容器会在内存中创建或复用一个 SBB 对象,并将持久化的 SBB 实体 数据加载到该对象中。SBB 对象然后使用这些数据来处理事件(比如结束呼叫并更新状态)。
  • 在事件处理完成后,SBB 对象的状态不会保存,而 SBB 实体的状态会根据业务逻辑需要进行持久化存储。

5. 生命周期管理和回收

  • SBB 实体的生命周期:SBB 实体的生命周期包括创建、激活、被挂起和移除等。SLEE 容器会在合适的时机创建或销毁 SBB 实体。例如,呼叫会话结束后,SLEE 容器会回收相关的 SBB 实体以释放资源。
  • SBB 实体树的回收:当一个根 SBB 实体被移除时,它的子实体(如果有的话)也会被递归移除。这意味着整个 SBB 实体树都会被回收,确保资源不会被泄露。

6. 总结:SBB 实体 vs SBB 对象

  • SBB 实体:持久化的、长期存在的,代表业务逻辑和状态。
  • SBB 对象:内存中的、短期存在的,临时用来处理具体的事件。

两者之间的关系可以理解为:SBB 实体是业务逻辑的真实存在,而 SBB 对象是它在内存中的执行载体

标签:容器,持久,区别,对象,实体,SLEE,SBB
From: https://blog.csdn.net/pumpkin84514/article/details/142438601

相关文章

  • window.location.href和window.open的几种用法和区别
    window.location.href和window.open的几种用法和区别2017年05月26日09:47:40阅读数:823阅读目录一、location.href常见的几种形式二、location.href不同形式之间的区别三、location.href总结四、window.location.href和window.open的区别使用js的同学一定知道j......
  • [AI回答]Java中Long和long的区别,为什么在Springboot项目中一般使用Long
    Long和long的区别在Java中,Long和long是两个不同的概念,它们分别代表不同的数据类型:long:这是一个基本数据类型(primitivetype)。它用于存储64位带符号的整数。它的取值范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807。在使用long类型变量时,......
  • `std::string_view`(c++17) 和 `std::stringstream` 使用区别·
    std::string_view和std::stringstream都是C++中处理字符串的工具,但它们的设计目标和使用场景非常不同。我们可以通过几方面进行对比。1.设计目的和核心功能std::string_view:设计用于只读访问字符串或字符序列。是一个轻量级的字符串视图,不会持有字符串的数据,仅仅是对......
  • ECMAScript与JavaScript的区别:深入解析与代码实践
    ECMAScript与JavaScript的区别:深入解析与代码实践在Web开发领域,ECMAScript(通常缩写为ES)和JavaScript是两个密不可分但又有所区别的概念。尽管它们之间有着紧密的联系,理解它们之间的区别对于开发者来说至关重要。本文将深入探讨ECMAScript与JavaScript的区别,并通过代码示例......
  • Keepalived 和 HAProxy的主要区别对比
    Keepalived和HAProxy(HighAvailabilityProxy)都是用于构建高可用性和负载均衡服务的重要工具,但它们的设计目标和主要功能有所不同。主要区别1.功能定位HAProxy:主要用于负载均衡,可以将客户端的请求分发到不同的后端服务器,同时提供健康检查等功能。HAProxy支持多种负载均衡算法,如......
  • http和https的区别
    HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)之间的区别主要体现在安全性、连接方式、证书管理、端口号、资源消耗和兼容性等方面。下面我将逐一介绍这些区别:1.安全性HTTP:是明文传输的,意味着数据在网络中传输时没有加密,因此这些数据可能会被截获或篡改。HTTPS:在HTTP的基础......
  • 编码器与霍尔传感器的工作原理及区别
    霍尔传感器示意图:120度安装: 60度安装:霍尔编码器示意图:工作原理:霍尔传感器:基于霍尔效应,利用霍尔元件检测磁场变化,从而确定位置和运动。当磁场发生变化时,霍尔传感器产生电压信号,用于检测转子位置或线性运动的位置。霍尔传感器通常用于无刷直流电机中,通过检测永磁体的位......
  • 深度学习速通系列:在命名实体识别中有哪些标注方法?
    命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及到从文本中识别出具有特定意义的实体,如人名、地名、机构名等。为了实现NER,有多种序列标注方法可以应用,以下是几种常见的方法:BIO标注法:这是最基本的序列标注方法,使用三个标签:B(Begin)表示实体的开始,I(Inside)表示实体内......
  • JS中的for...in和for...of有什么区别?
    你好,我是沐爸,欢迎点赞、收藏、评论和关注。在JavaScript中,for...in和for...of是两种用于遍历数组(或其他可迭代对象)的循环语句,但它们之间存在显著的差异。一、遍历数组for…inconstarr=['apple','banana','cherry']for(constindexinarr){console.l......
  • 音视频生态下Unity3D和虚幻引擎(Unreal Engine)的区别
    技术背景好多开发者跟我们做技术交流的时候,会问我们,为什么有Unity3D的RTMP|RTSP播放模块,还有RTMP推送和轻量级RTSP服务模块,为什么不去支持虚幻引擎?二者区别在哪里?本文就Unity3D和虚幻引擎之间的差异,做个大概的分析,实际上,Unity3D和虚幻引擎(UnrealEngine)在游戏开发及其他相关领域都......