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)
上一篇 2022年5月27日 下午1:20
下一篇 2022年5月27日 下午1:40


相关推荐

  • String转换成json格式(二):org.codehaus.jettison.json.JSONObject

    String转换成json格式(二):org.codehaus.jettison.json.JSONObject实例 将 str 转换成 JSONObjct 格式 publicstatic String args Stringstr result success message 成功 JSONObjectjs try json newJSONObjec str System ou

    2026年3月17日
    1
  • springboot集成elasticsearch注意事项

    springboot集成elasticsearch注意事项一、elasticsearch基础  这里假设各位已经简单了解过elasticsearch,并不对es进入更多的,更深层次的解释,如有必要,会在写文章专门进行es讲解。  Elasticsearch是一个基于ApacheLucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。  但是,Lucene只是一个…

    2022年6月24日
    22
  • 内部类(成员内部类、静态内部类、方法内部类)

    内部类(成员内部类、静态内部类、方法内部类)一:成员内部类:最常见的内部类就是成员内部类,也称作普通内部类;1、Inner类定义在Outer类的内部,相当于Outer类的成员变量的位置,Inner类可以使用任意访问修饰符,如:public、private、protected等。2、Inner类中定义的test()方法可以访问Outer类中的数据,不受访问控制符的影响。3、定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去……

    2022年10月11日
    3
  • javaweb-爬虫-2-63

    javaweb-爬虫-2-63

    2021年5月18日
    142
  • Python实现微信消息连续轰炸(发送)

    Python实现微信消息连续轰炸(发送)丐版刷屏程序 仅需在使用期间把鼠标放在微信聊天框里即可适合新手学习

    2026年3月17日
    2
  • 安全测试:BurpSuite 学习使用教程

    安全测试:BurpSuite 学习使用教程一、简介:BurpSuite是用于攻击web应用程序的集成平台。它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。它主要用来做安全性渗透测试

    2022年6月13日
    63

发表回复

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

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