ICE的服务器对象实现「建议收藏」

ICE的服务器对象实现「建议收藏」1、需要增加一个类继承至生成的接口类,并实现接口类的虚方法。2、创建实现类的对象3、调用adpater的add方法将创建的对象绑定到adapter中,并传入一个全局唯一标示符,该唯一标示可以通过如下方法生成:  adapter->add(hello,communicator()->stringToIdentity(“hello”));  adapter->addWithUUI

大家好,又见面了,我是你们的朋友全栈君。1、需要增加一个类继承至生成的接口类,并实现接口类的虚方法。

2、创建实现类的对象

3、调用adpater的add方法将创建的对象绑定到adapter中,并传入一个全局唯一标示符,该唯一标示可以通过如下方法生成:

   adapter->add(hello, communicator()->stringToIdentity(“hello”));

   adapter->addWithUUID(hello);

   Ice::Ideentity id; id.name=”hello”; adapter->add(hello, id);

4、adapter的add和addWithUUID方法返回一个代理对象,可以将该代理对象返回给客户端让其调用代理的方法

5、在实现接口的操作方法时,在每个操作的最后一个参数都会被ice映射成const Current& current,可以通过该成员获取操作调用上下文信息

   Current的定义如下:

   module Ice 

   {

        local dictionary<string, string> Context;

        enum OperationMode { Normal, \Idempotent };

        local struct Current 


   {

            ObjectAdapter adapter;    // 服务器的对象适配器,可以通过它再调用getCommunicator得到通信器


           Connection con;           // 连接对象

            Identity id;              // 服务对象标示

            string facet;             // 

            string operation;         // 操作的名称

            OperationMode mode;       // 操作模式

            Context ctx;              // 操作上下文属性


            int requestId;            // 请求ID

        };

    };

6、服务器端接收到请求后会自动的分派请求给正确的服务对象,因为在请求中携带了对象标示。在分派给服务对象前,可以设置拦截器,具体操作如下:
   adapter->add(hello, communicator()->stringToIdentity(“hello”));
   该处不添加hello这个servant,取而代之的是设置一个DispatchInterceptor
   class MyDipatchInterceptor : public Ice::DispatchInterceptor
   {

   public:
       MyDipatchInterceptor(const MyServantIPtr& servant) : _servant(servant)
  {

  
  }
  
       virtual DispatchStatus dispatch(Request& request)
       {

            return _servant->dispatch(request);
       }
private:
  const MyServantIPtr& _servant;
   };
   adapter->add(new MyDipatchInterceptor(hello), communicator()->stringToIdentity(“hello”));

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140697.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【转载】谢孟媛_初级英文文法_讲义!全!!

    【转载】谢孟媛_初级英文文法_讲义!全!!初级英文文法ⅠUnit1名词、冠词———————1名词的种类名词的数名词的所有格冠词Unit2be动词、一般动词的现在式——————–

    2022年7月1日
    23
  • SPPnet论文总结

    SPPnet论文总结小菜看了SPPNet这篇论文之后,也是参考了前人的博客,结合自己的一些观点写了这篇论文总结。这里参考的连接如下:[http://blog.csdn.net/u013078356/article/details/50865183]论文:《SpatialPyramidPoolinginDeepConvolutionalNetwo

    2022年6月7日
    31
  • Spring Boot—(11)SpringBoot使用Junit单元测试

    Spring Boot—(11)SpringBoot使用Junit单元测试欢迎关注公众号:java4all摘要:本文详细的记录了SpringBoot如何结合Junit写测试用例,如何执行,打包执行,忽略执行等操作,SpringBoot内置了Junit测试组件,使用很方便,不用再单独引入其他测试组件。演示环境:SpringBoot+mybatis开发工具:IntelliJIDEA1.pom.xml一般使用idea新建一个Sp…

    2022年6月9日
    39
  • JSP技术简介

    JSP技术简介1JSP技术的特征JSP技术所开发的web应用程序是基于Java的,它拥有Java跨平台的特性,以及业务代码分离,组建重用,基础Javaservlet功能和预编译功能。1)跨平台由于JSP是基于Java语言的,因而它可以使用Java的API,所以也是跨平台的,可以应用在Windows、Linux、Mac和Solaris。2)业务代码分离…

    2022年6月28日
    34
  • 如何新建vue项目(如何配置vue的开发环境)

    一、vue开发环境搭建1、安装nodejs步骤:在node官网(https://nodejs.org/en/download/)选择跟自己的电脑匹配的版本进行下载,然后一步步的安装即可,在cmd控制台输入node-v,如果出现版本信息即表示安装成功。2、npm包管理器是集成在node中的,所以直接输入npm-v就能查看到版本信息,若出现版本信息则表示npm能正常使用。3、输入npminstall-gcnpm–registry=http://registry.npm.taobao.o

    2022年4月15日
    75
  • 在SharePoint 2010中部署RBS (转)

    在SharePoint 2010中部署RBS (转)

    2021年12月9日
    61

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号