searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

ALOGIC服务调用流程

2023-10-17 09:23:26
6
0

一 服务的注册

当一个请求输入时,MessageRouter是通过ServantFactory来创建服务实例的。所以当一个服务请求想要得到相应的响应,必须在Alogic中在MessageRouter中,ServantFactory的典型初始化如下:

ServantFactory通过配置文件加载得到一个ServantFactory的实例,ServantFactory类继承了Configurable方法,configure重写了方法。当进行实例化时候,ServantFactory的注册如下: 

服务的注册涉及到以下几个关键的类:

  • ServantFactory: 服务工厂
  • ServantRegistry: 服务注册表,用于为服务工厂提供服务规格配置信息
  • ServantCatalog: 服务目录,某类服务的集合

先在LogicBusApp.java中,采用如下方式初始化ServantFactory配置:

ServantFactory的初始化会将配置文件中<sf module="com.logicbus.backend.QueuedServantFactory">解析,并将<servantFactory: QueuedServantFactory>这个键值对写入到Setting中。 在MessageRouter中,随后在Setting文件读取Setting类的配置并实例化一个QueuedServantFactory类。

二 服务注册表的加载

Abstract作为ServantFactory的内部抽象类,重写了XMLConfigurableconfigure(Element e, Properties p)的方法。该方法能够读取Alogic的配置并实例化一个ServantRegistry。 在ServantFactory的Abstract抽象类将如下配置文件中解析,从而实例化一个ServantRegistry。

一个服务配置的配置文件如下:

三 服务目录的加载

ServantManager继承了ServantRegistry接口的Abstract实现类,ServantManager负责从服务目录中读取服务规格信息,可支持一到多个服务目录.配置文件地址可以从web.xml或者全局参数中读取, 它通过如下方式,获取服务指定的服务目录,并将获得的服务目录输入到如下数据结构中:

四 服务的注册

服务目录ServantCatalog是一个接口,通过服务目录的加载配置文件来决定要实例化哪个对象。从如下一个服务目录配置进行分析:

TogetherServantCatalog继承了XMLResourceServantCatalog,XMLResourceServantCatalog是ServantCatalog的一个接口实现类。当实例化TogetherServantCatalog服务目录之后,执行configure方法,会调用子类的loadDocument方法:

该方法将服务的信息加载,并存到一个XML文档中,即Document类中。用于保存服务的路径信息。

五 服务的调用

服务通过XML被配置后,当一个Http请求进来时候,alogic获取服务实例的逻辑如下:

  1. 初始化ServantFactory
  2. 获取服务实例池
  3. 从服务实例池中拿服务实例,并执行
  4. 执行服务逻辑
  5. 返回Http响应报文

以上就是alogic中一个服务被调用的流程。

0条评论
作者已关闭评论
Coding
19文章数
1粉丝数
Coding
19 文章 | 1 粉丝
原创

ALOGIC服务调用流程

2023-10-17 09:23:26
6
0

一 服务的注册

当一个请求输入时,MessageRouter是通过ServantFactory来创建服务实例的。所以当一个服务请求想要得到相应的响应,必须在Alogic中在MessageRouter中,ServantFactory的典型初始化如下:

ServantFactory通过配置文件加载得到一个ServantFactory的实例,ServantFactory类继承了Configurable方法,configure重写了方法。当进行实例化时候,ServantFactory的注册如下: 

服务的注册涉及到以下几个关键的类:

  • ServantFactory: 服务工厂
  • ServantRegistry: 服务注册表,用于为服务工厂提供服务规格配置信息
  • ServantCatalog: 服务目录,某类服务的集合

先在LogicBusApp.java中,采用如下方式初始化ServantFactory配置:

ServantFactory的初始化会将配置文件中<sf module="com.logicbus.backend.QueuedServantFactory">解析,并将<servantFactory: QueuedServantFactory>这个键值对写入到Setting中。 在MessageRouter中,随后在Setting文件读取Setting类的配置并实例化一个QueuedServantFactory类。

二 服务注册表的加载

Abstract作为ServantFactory的内部抽象类,重写了XMLConfigurableconfigure(Element e, Properties p)的方法。该方法能够读取Alogic的配置并实例化一个ServantRegistry。 在ServantFactory的Abstract抽象类将如下配置文件中解析,从而实例化一个ServantRegistry。

一个服务配置的配置文件如下:

三 服务目录的加载

ServantManager继承了ServantRegistry接口的Abstract实现类,ServantManager负责从服务目录中读取服务规格信息,可支持一到多个服务目录.配置文件地址可以从web.xml或者全局参数中读取, 它通过如下方式,获取服务指定的服务目录,并将获得的服务目录输入到如下数据结构中:

四 服务的注册

服务目录ServantCatalog是一个接口,通过服务目录的加载配置文件来决定要实例化哪个对象。从如下一个服务目录配置进行分析:

TogetherServantCatalog继承了XMLResourceServantCatalog,XMLResourceServantCatalog是ServantCatalog的一个接口实现类。当实例化TogetherServantCatalog服务目录之后,执行configure方法,会调用子类的loadDocument方法:

该方法将服务的信息加载,并存到一个XML文档中,即Document类中。用于保存服务的路径信息。

五 服务的调用

服务通过XML被配置后,当一个Http请求进来时候,alogic获取服务实例的逻辑如下:

  1. 初始化ServantFactory
  2. 获取服务实例池
  3. 从服务实例池中拿服务实例,并执行
  4. 执行服务逻辑
  5. 返回Http响应报文

以上就是alogic中一个服务被调用的流程。

文章来自个人专栏
开发感悟
19 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0