ICE中的连接计数

时间:2012-02-20 14:02:21

标签: java ice

现在我正在尝试在java项目中使用ICE。我想知道是否应该为服务器和客户端配置连接数。如果我应该,我怎么配置计数?

1 个答案:

答案 0 :(得分:0)

是的,你应该这样做。

  

每个通信器创建两个线程池:

     

客户端线程池主要为传出连接提供服务   涉及处理对传出请求的回复和包括   通知AMI回调对象。如果使用连接   双向模式,客户端线程池也调度传入   回调请求。传入服务器线程池服务   连接。它调度传入的请求,并且是双向的   连接,进程回复传出请求。默认情况下,这些   所有通信器的对象共享两个线程池   适配器。如有必要,您可以配置单个对象适配器   改为使用私有线程池。

默认情况下,线程数只有一个。所以你可能想要扩大它。

以三种方式更改这些数字:

  1. 命令行参数
  2. 硬代码
  3. 配置文件
  4. 硬代码示例

    protected void initProperties(Ice.Properties iceProperties) {
        iceProperties.setProperty("Ice.Override.ConnectTimeout", "70");
        iceProperties.setProperty("Ice.ThreadPool.Client.Size", "100");
        iceProperties.setProperty("Ice.ThreadPool.Client.SizeMax", "1000");
        iceProperties.setProperty("Ice.ThreadPool.Client.StackSize", "131072");//128k
        iceProperties.setProperty("Ice.ThreadPool.Server.SizeMax", "1000");
        iceProperties.setProperty("Ice.ThreadPool.Server.StackSize", "131072");
        iceProperties.setProperty("Ice.MessageSizeMax", "102400");
    }
    
    protected void init() {
        Ice.Properties iceProperties = Ice.Util.createProperties();
        initProperties(iceProperties);
        Ice.InitializationData initData = new Ice.InitializationData();
        initData.properties = iceProperties;
        ic = Ice.Util.initialize(initData);
        communicators.add(ic);
    }
    

    见: