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”));

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java动态代理中的invoke方法是如何被自动调用的「建议收藏」

    java动态代理中的invoke方法是如何被自动调用的「建议收藏」Java中动态代理的实现,关键就是这两个东西:Proxy、InvocationHandler,下面从InvocationHandler接口中的invoke方法入手,简单说明一下Java如何实现动态代理的。        首先,invoke方法的完整形式如下: Java代码  public Object invoke(Object proxy, Method m

  • TDD-LTE与FDD-LTE区别之频段分配[通俗易懂]

    TDD-LTE与FDD-LTE区别之频段分配[通俗易懂]之前转载了一个惯有TDD与FDD异同点比较的博客,看了之后觉得还是根据异同点进行分类整理一下,这样应该能够更好的有利于大家的记忆与理解。所以这一节我们就先来整理一下这两者的频段与双工方式的区别。TDD与FDD分别是时分双工和频分双工的英文简写;FDD系统在发送和接收数据上使用不同的频率,在上行和下行频率之间有双工间隔,现在常见的2G,3G制式的网络中,GSM,CDMA,WCDM

  • 验证二叉搜索树 leetcode_二叉树的最长路径

    验证二叉搜索树 leetcode_二叉树的最长路径重写equal()时为什么也得重写hashCode()之深度解读equal方法与hashCode方法渊源 原创  2016年05月08日 23:14:19 标签:java equal方法重写 /java /重写equals方法和hashCode方 10077 转载请注明出处: http://blog.csdn.net/javazejian/art…

  • python allure的介绍和使用(持续更新中)

    python allure的介绍和使用(持续更新中)1、allure的介绍2、allure的报告概览3、allure的安装4、使用allure2生成更加精美的测试报告pipinstallallure-pytest(安装这个辅助allure生成测试报告)pytest–alluredir=指定路径(指定allure报告数据生成路径)allureserve报告路径(生成HTML报告,这个会直接在线打开报告)allur…

  • 775针最好的cpu天梯图_英特尔处理器排名天梯图

    775针最好的cpu天梯图_英特尔处理器排名天梯图E7500是第一代酷睿双核cpu,采用LGA775接口,目前属于低端入门水平,已经淘汰。这款cpu可以满足GTA4的配置要求,可以比较流畅的运行这款游戏。GTA4配置要求.E7500是酷睿2代的中高端双核,在产品线来说是一款中档次产品。酷睿i3是第一代i系列中的入门级双核,性能虽然普遍比上一代产品的定位提升了不少,但和E7500基本.酷睿2系列和奔腾4有啥性能区别?差别大吗?肯定有差距,我使用7…

  • Android入门教程二之开发环境搭建[通俗易懂]

    Android入门教程二之开发环境搭建[通俗易懂]不废话,直接上车:现在主流的Android开发环境有:①Eclipse+ADT+SDK②AndroidStudio+SDK③IntelliJIDEA+SDK现在国内大部分开发人员还是使用的Eclipse,而谷歌宣布不再更新ADT后,并且官网也去掉了集成Android开发环境的Eclipse下载链接,各种现象都表示开发者最后都终将过渡到AndroidStud

发表回复

您的电子邮箱地址不会被公开。

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