`
zhaoningbo
  • 浏览: 610213 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

解决Ice.MessageSizeMax限制异常

阅读更多
引言:

  今天同事老姜在使用ICE的时候,遇到个异常,报告“冲突Ice.MessageSizeMax限制”异常。这个异常到底是怎么回事呢?

  编译脚本  :http://zhaoningbo.iteye.com/admin/blogs/1135564(依赖Ice环境)
  追究存在性:http://doc.zeroc.com/pages/viewpage.action?pageId=3900811

正文:

  首先不得不赞美一下Zeroc Ice异常机制的人性化,很多时候直接报到“根源”(当然,遇上报Endpoint, socket, pipe纠结是必须的)。

  解决方法,根据大宗使用手法可分以下几类:

  1,基于IceGrid-IceBox/IceGrid部署

    果断两大手法:
    (1)给“registry_node.config”(ICE注册及结点配置文件,忘名知意;-D)添加“Ice.MessageSizeMax”值为更合适的整数(不带单位,默认1024,即1024K)。
    (2)IceGridGUI.jar跑起来,在界面给相应的“Server”添加一个“Ice.MessageSizeMax”属性及值。犀利些的,直接去“application.xml”玩吧。

  2,基于Ice.Application的javac/java命令行

    手法千千万,关注一个点:
    (1)Ice.Application.main(String appName, String[] args, T),在T上做文章。
    然后,爱传配置文件的随便建个名字不跟“Ice命名犯冲”的名称,在T处放个文件路径;爱命令行思路的,直接丢个“Ice.MessageSizeMax=NNN”。爱传对象的,整个“Ice.InitializationData”……
    这里不写样例是因为Ice.Application.main(...)的一组方法有说明。

  3,基于&*(^**,基于手写(编写测试图方便可能用到;-d)

    先上样例代码

    // 加载属性文件
    Ice.Properties beforeProperties = Ice.Util.createProperties();
    beforeProperties.setProperty("Ice.MessageSizeMax", "10240");
    Ice.InitializationData initData = new Ice.InitializationData();
    initData.properties = beforeProperties;
    System.out.println(beforeProperties.getProperty("Ice.MessageSizeMax"));
    // 1, 初始化环境
    Ice.Communicator ic = Ice.Util.initialize(initData);
    Ice.Properties afterProperties = ic.getProperties();
    System.out.println(afterProperties.getProperty("Ice.MessageSizeMax"));

    // 2, 初始化Adapter


    其中:
      L2:beforeProperties,创建一个空的配置文件
      L9:afterProperties,从生成的通讯员拿回的配置信息
    意图就在验证设置是否生效。验证效果如下
10240
10240
<<HelloUID started>>

    成功了。

    最后特别要强调的是:如果在服务方Ice.Communicator设置了“Ice.MessageSizeMax”,请务必在客户方也设置。

    因为网上问这一问题得多,完整处理的没有,又算不上什么技术活,笔者在此叨叨一下。有问题欢迎追问,邮件或贴都喜欢~。=

    (完结)

分享到:
评论
2 楼 fly雪域清风 2017-07-19  
 
1 楼 376174502 2016-08-02  
您好,我的是java的
   我按您的方法 “3,基于&*(^**,基于手写(编写测试图方便可能用到;-d)”
设置了,可是还抛异常如下


警告: 00:00 WARN: ErrorMsg:
Ice.MemoryLimitException
    reason = "requested 2007740 bytes, maximum allowed is 1048576 bytes (see Ice.MessageSizeMax)"
null
Ice.MemoryLimitException
    reason = "requested 2007740 bytes, maximum allowed is 1048576 bytes (see Ice.MessageSizeMax)"

相关推荐

Global site tag (gtag.js) - Google Analytics