datasnap——动态注册服务类

在DataSnap的应用程序时,我们首先需要注册的服务器类,以提供访问客户端应用程序的服务器方法。通常的做法是使用DSServerClass组件,但有些时候,我们要做到在运行时加载。下面代码实现的类TSimpleServerClass从TDSServerClass继承,超载了Create方法并且增加了ServerClass,DataSnap Server和LifeCycle三个参数。

type

TSimpleServerClass = class(TDSServerClass)
private
FPersistentClass: TPersistentClass;
protected
function GetDSClass: TDSClass; override;
public
constructor Create(AOwner: TComponent; AServer: TDSCustomServer;
AClass: TPersistentClass; ALifeCycle: String); reintroduce; overload;
end;

procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer);

implementation

constructor TSimpleServerClass.Create(AOwner: TComponent; AServer: TDSCustomServer;
AClass: TPersistentClass; ALifeCycle: String);
begin
inherited Create(AOwner);
FPersistentClass := AClass;
Self.Server := AServer;
Self.LifeCycle := ALifeCycle;
end;

function TSimpleServerClass.GetDSClass: TDSClass;
begin
Result := TDSClass.Create(FPersistentClass, False);
end;

现在我们只需要为每个Server Class初始化TSimpleServerClass。下面的代码在同一服务器上注册3个不同生命周期的类。

procedure RegisterServerClasses(AOwner: TComponent; AServer: TDSServer);
begin
Assert(AServer.Started = false, 'Can''t add class to non active Server');

TSimpleServerClass.Create(AOwner, AServer, TGlobal, TDSLifeCycle.Server);
TSimpleServerClass.Create(AOwner, AServer, TCustomer, TDSLifeCycle.Session);
TSimpleServerClass.Create(AOwner, AServer, TObjectPool, TDSLifeCycle.Invocation);
end;

转载于:https://www.cnblogs.com/hnxxcxg/p/6897133.html

datasnap——动态注册服务类相关推荐

  1. Oracle动态注册服务名

    微信公众号:IT邦德 目前B站(搜索jeames007)正在直播Mysql.Oracle.Python实战课程 详情关注公众号:IT邦德 QQ群:168797397.587159446 本文数据库版本 ...

  2. Spring容器装饰者模式应用之实现业务类与服务类自由组合的解决方式

    在不论什么一个项目中都不可或缺的存在两种bean,一种是实现系统核心功能的bean,我们称之为业务类,第二种是与系统核心业务无关但同一时候又提供十分重要服务bean,我们称之为服务类.业务类的bean ...

  3. RPC原来就是Socket——RPC框架到dubbo的服务动态注册,服务路由,负载均衡演化...

    序:RPC就是使用socket告诉服务端我要调你的哪一个类的哪一个方法然后获得处理的结果.服务注册和路由就是借助第三方存储介质存储服务信息让服务消费者调用.然我们自己动手从0开始写一个rpc功能以及实 ...

  4. 在来电监听服务中动态注册去电广播(BroadcastRecevier)

    1 去电广播接收函数: /*** 广播监听receiver* @author admin**/public class OutCallRecevierDynamicRegister extends B ...

  5. (手机版数据同步)财务注册公司工商服务类企业网站源码 公司注册财会类网站织梦模板

    介绍 (手机版数据同步)财务注册公司工商服务类企业网站织梦模板 公司注册财会类网站源码下载 本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围极广,不仅仅局限于一类型的其企业,财务注册.工商服务 ...

  6. Servlet - Upload、Download、Async、动态注册

    Servlet 标签 : Java与Web Upload-上传 随着3.0版本的发布,文件上传终于成为Servlet规范的一项内置特性,不再依赖于像Commons FileUpload之类组件,因此在 ...

  7. Oracle监听注册和sqlnet,Oracle监听的动态注册与静态注册

    Oracle监听 介于Oracle的数据库和客户端之间的通道.因为数据库本身不对外提供服务,所以需要通过监听器来实现. 几个相关的参数: local_listener db_domain remote ...

  8. Android 第十九课 大喇叭--广播机制----动态注册监听网络变化与静态注册实现开机启动

    为了便于进行 系统级别的消息通知,Android引入了一套广播消息机制. 1.广播机制简介: 因为Android中的每个应用程序都可以对自己感兴趣的广播尽心注册,这样程序只会接收自己所关心的广播内容, ...

  9. springboot使用ImportBeanDefinitionRegistrar 动态注册bean

    [README] 1.采用  ImportBeanDefinitionRegistrar 动态注册bean,应用场景有: 如 一个后端服务需要用到多个 rabbitmq集群客户端,kafka客户端:这 ...

最新文章

  1. python单词意思-python实现单词本功能
  2. 用WINHEX合并两个或多个BIN文件
  3. 已解决:IAR编译时出现duplicate definitions for IAR报错
  4. linux运维入门第一周的学习部分命令!
  5. 戴尔背书飞贷:创新IT技术直击金融机构互联网转型需求
  6. keras faster物体检测_【开源项目】特斯拉+树莓派实现车牌识别检测系统
  7. jQuery.Deferred和Promise
  8. python读书笔记2000_流畅的Python读书笔记
  9. Archlinux 升级 pacman 时遇到的问题及其解决
  10. 随机函数(Pascal入门)
  11. Java--随机数和随机数种子(转)
  12. java day23【函数式接口】
  13. JAVA:项目文档及编写目的汇总
  14. cc直播怎么显示服务器,CC直播像素杯四大服务器严阵以待 MC精彩赛事即刻开启...
  15. python垃圾邮件识别_Python之机器学习-朴素贝叶斯(垃圾邮件分类)
  16. k8s中部署prometheus监控告警系统-prometheus系列文章第一篇
  17. 国外部分音乐人工智能/音乐科技研究机构科研项目简介
  18. linux服务器被挖矿的解决办法
  19. 浅谈IT服务与服务管理
  20. 【Codecs系列】HEVC中三种Intra帧类型的区别:BLA/IDR/CRA

热门文章

  1. 并发下,使用redis防止数据重复插入(数据库未对表字段设置唯一情况下)
  2. centos6架设dhcp服务器提供两个网段的IP地址分配
  3. Android+clipse导入工程提示:invalid project description
  4. 轻博客:企业品牌互动传播利器
  5. Excel 货币中文大写汉字转化
  6. Bruce' Tool 4 - autoruns
  7. RESTful架构与RPC架构
  8. Java多线程(线程同步)
  9. python 重复执行任务_使用Python自动执行数字艺术家的重复任务
  10. raspberry pi_如何将Raspberry Pi配置为微控制器