Java ICE中的连接计数

Java ICE中的连接计数,java,ice,Java,Ice,现在我正试图在java项目中使用ICE。我想知道是否应该同时为服务器和客户端配置连接计数。如果应该,如何配置计数 是的,你应该这样做 每个通信器创建两个线程池: 客户端线程池为传出连接提供服务,这些传出连接主要是 涉及处理对传出请求的答复,包括 通知AMI回调对象。如果在中使用了连接 在双向模式下,客户端线程池也会分派传入的线程 回调请求。服务器线程池服务传入 连接。它发送传入的请求,对于双向请求 连接,处理对传出请求的答复。默认情况下,这些 两个线程池由通信器的所有对象共享 适配器。如有必要,

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

是的,你应该这样做

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

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

默认情况下,线程数仅为一个。所以你可能想放大它

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

  • 命令行参数
  • 硬代码
  • 配置文件
  • 硬代码示例

    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);
    }
    
    见此: