首页 > 其他分享 >JAIN SLEE 服务创建过程 (创建一个服务)

JAIN SLEE 服务创建过程 (创建一个服务)

时间:2024-10-12 22:20:25浏览次数:3  
标签:服务 定义 部署 创建 SLEE SBB JAIN

JAIN SLEE 服务创建过程 (创建一个服务)

根据 JAIN SLEE 1.1 规范,创建服务遵循特定步骤,包括定义、定制、打包和部署服务。以下是关键部分的解释以及 XML 节点的注释说明。


1. 服务定义

定义服务时,需要确定服务的组成部分,例如服务构建块(Service Building Blocks, SBB)以及它与外部资源的交互。

  1. 服务部署描述符
    • 部署描述符是一个 XML 文件,用于定义服务的各种属性。
    • 关键元素
      • service-name, service-vendor, service-version: 唯一标识服务的名称、提供商和版本信息。
      • root-sbb: 标识服务的根 SBB,这是驱动服务逻辑的核心组件。
      • default-priority: 设置根 SBB 与 SLEE 之间的事件传递优先级。
      • address-profile-table: 定义为服务触发的地址配置文件表。
<!-- 服务部署描述符:定义服务的名称、提供商和版本 -->
<service-xml>
    <service>
        <!-- 服务的描述信息 -->
        <description> FooService </description>
        
        <!-- 服务名称 -->
        <service-name> FooService </service-name>
        
        <!-- 服务提供商 -->
        <service-vendor> com.foobar </service-vendor>
        
        <!-- 服务版本 -->
        <service-version> 1.0 </service-version>
        
        <!-- 根SBB:标识服务的核心逻辑处理模块 -->
        <root-sbb>
            <description> Root SBB for FooService </description>
            <!-- SBB名称 -->
            <sbb-name> FooSBB </sbb-name>
            <!-- SBB提供商 -->
            <sbb-vendor> com.foobar </sbb-vendor>
            <!-- SBB版本 -->
            <sbb-version> 1.0 </sbb-version>
        </root-sbb>

        <!-- 事件传递的默认优先级 -->
        <default-priority> 5 </default-priority>
        
        <!-- 地址配置文件表 -->
        <address-profile-table> FooAddressProfileTable </address-profile-table>
    </service>
</service-xml>

2. 定制服务

在服务运行之前,必须根据运行环境对其进行定制,特别是在资源适配器绑定和 SBB 属性别名的冲突处理上。

  • 资源适配器: 服务部署者确保 SBB 绑定正确的资源适配器,定义服务如何与外部系统交互。
  • 活动上下文属性别名: 如果两个 SBB 之间在别名上存在冲突,部署者可以通过修改部署描述符来解决。
<!-- SBB部署描述符:定义SBB与资源适配器的绑定 -->
<sbb-jar>
    <sbb>
        <!-- SBB的名称、提供商和版本信息 -->
        <sbb-name>FooSBB</sbb-name>
        <sbb-vendor>com.foobar</sbb-vendor>
        <sbb-version>1.0</sbb-version>

        <!-- 绑定的资源适配器类型 -->
        <resource-adaptor-type-binding>
            <resource-adaptor-type-name>FooRAType</resource-adaptor-type-name>
            <resource-adaptor-type-vendor>com.foobar</resource-adaptor-type-vendor>
            <resource-adaptor-type-version>1.0</resource-adaptor-type-version>
        </resource-adaptor-type-binding>

        <!-- 绑定的资源适配器实体 -->
        <resource-adaptor-entity-binding>
            <resource-adaptor-entity-name>FooRAEntity</resource-adaptor-entity-name>
        </resource-adaptor-entity-binding>

    </sbb>
</sbb-jar>

3. 打包服务

服务定义和定制后,需要将服务及其所有组件打包为一个可部署单元(通常是一个 JAR 文件)。

  • 可部署单元结构
    • 包含服务的 XML 描述符和组成部分,如 SBB、配置文件规范、事件类型和资源适配器类型。
    • 可部署单元必须按照结构化方式打包,并包含 META-INF/deployable-unit.xml 文件,该文件描述了其内容。
<!-- 可部署单元描述符:定义服务打包时的组成部分 -->
<deployable-unit>
    <description> FooService deployment package </description>
    
    <!-- 包含的SBB JAR文件 -->
    <jar> FooSBB.jar </jar>
    
    <!-- 包含的地址配置文件规范 -->
    <jar> FooAddressProfileSpec.jar </jar>
    
    <!-- 服务部署描述符 -->
    <service-xml> FooService.xml </service-xml>
</deployable-unit>

4. 部署服务

服务打包后,需要将可部署单元安装到 SLEE 环境中,注册服务并开始处理事件。

  • 服务注册:服务根据其定义的逻辑开始处理事件,例如根据事件类型创建新的 SBB 实例。
  • 服务交互:服务的根 SBB 会处理这些事件,必要时与外部系统进行交互。

示例:服务部署过程

一旦服务部署到 SLEE 中,它就会根据配置表中的地址信息,自动创建 SBB 实例来处理相应的事件。

  1. 触发 SBB 实例
    如果在 FooAddressProfileTable 中配置了某个地址,那么每当与该地址相关的事件发生时,系统会为 FooSBB 创建一个实例来处理该事件。

  2. 处理事件
    根 SBB (FooSBB) 会根据事件的类型和内容执行相应的逻辑,可能会调用子 SBB 来处理特定的任务。


总结

JAIN SLEE 服务的创建过程主要分为四个步骤:

  • 定义服务的各个组成部分;
  • 定制服务,确保与外部资源的交互正常;
  • 将服务及其组件打包为可部署单元;
  • 部署服务,开始处理实际事件。

通过这些步骤,服务能够根据事件的发生动态创建 SBB 实例,并根据业务逻辑进行事件处理。

标签:服务,定义,部署,创建,SLEE,SBB,JAIN
From: https://blog.csdn.net/pumpkin84514/article/details/142864565

相关文章

  • proteus-7.8的安装教程+安装产生的问题+创建桌面快捷方式
    20241012,记录一下老师教的Proteus7.8的安装过程,以及自己在安装过程中产生的问题目录安装过程1-21出现Nolicencekeyisinstalled的问题解决方法,请看8proteus的破解方法,请看17-20寻找proteus,创建桌面快捷方式,请看211.新建一个文件夹,Proteus(建议放在D盘)2.解压Proteus-......
  • 创建的对象与class 对象的区别,两者之间的关系
    什么是class对象Class对象保存每个类型运行时的类型信息,如类名、属性、方法、父类信息等等。在JVM中,一个类只对应一个Class对象可以将java中的class对象看成一个模具,我们new出来的对象,则是通过模具按压出来的具体模型,模型里面的各种颜色各不相同(对象内的成员)class对象的特......
  • hexo-开源框架-创建博客
    hexo-开源框架-创建博客导语现在随着计算机的飞速发展,拥有一个属于自己的博客,是一件非常平常的事。使用hexo搭建一个属于自己的个人博客,是即快捷又美观的一种方式,也是非常受到人们的喜爱的。hexo介绍Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,可以方便的生成......
  • 【Java】创建对象的几种方式
    【Java】创建对象的几种方式合集-Java基础(11)1.【Java】Integer包装类缓存(cache)05-092.【java】Java之关于基本数据类型和引用数据类型的存放位置05-093.【java】ArrayList和LinkedList的区别05-104.【java】【集合类】HashMap与HashTable的区别05-105.【Java】的四种引用......
  • Django项目的创建及说明(详细图解版)
    Django项目的创建及说明1、安装Django2、创建项目2.1、利用终端创建项目2.2、利用Pycharm企业版创建项目3、默认文件介绍1、安装Django在终端输入下述命令行。pipinstalldjango安装成功后执行如下命令查看Django是否安装好,若正确显示出Django版本号则安装成功......
  • Qt初识_通过代码创建hello world
    个人主页:C++忠实粉丝欢迎点赞......
  • Python如何创建异步上下文管理器
    异步上下文管理器的主要作用和使用场景:主要作用:自动管理异步资源的获取和释放确保异步操作的正确完成和清理简化异步代码的错误处理提供更清晰、更简洁的异步代码结构常见使用场景:数据库连接管理自动处理异步数据库连接的打开和关闭确保在操作完成后正确释......
  • 07-数据表创建方式(Database First、Model First、Code First)
    常见的创建数据表结构的三种方式:DatabaseFirstModelFirst  DBA经常使用这个方式CodeFirst   推荐程序员使用,此方法专注于业务模型的设计,而不是专注数据库设计 Flask-SQLAlchemy介绍SQLALchemy实际上是对数据库的抽象,让开发者不用直接和SQL语句打交道,而是......
  • vue ui创建项目报错:Cannot read property 'indexOf' of undefined解决方法
    本来以为是个很简单的小报错,在网上搜了几个教程竟然都没有解决,整了快半个小时,越整越烦躁。最后忍无可忍重新安装了一遍nodejs,竟然还报这个错...突然想到自己一直没去看详细的报错日志,于是在黑窗看了一下报错内容:原来是权限不够(注:之前用系统管理员身份运行过,创建项目那里目录一......
  • 【文心智能体】初次游西湖不发愁,旅游智能体全程陪你走(文心智能体创建的保姆级流程和调
    (【文心智能体】初次游西湖不发愁,旅游智能体全程陪你走(文心智能体创建的保姆级流程和调优经验))一、灵感来源最近打算带家里人去杭州旅游,逛逛西湖,看看秀丽的水山风景。但是看了网上的各种攻略教程,看的眼花缭乱,反而不知道该何去何从了。社恐的我,又不愿意请导游,加之囊中羞涩,就彻底打......