今、私はJavaプロジェクトでICEを使おうとしています。サーバーとクライアントの両方の接続数を構成する必要があるかどうか疑問に思います。必要に応じて、カウントを構成するにはどうすればよいですか?
1 に答える
0
はい、これを行う必要があります。
各コミュニケーターは、次の 2 つのスレッド プールを作成します。
クライアント スレッド プールは、発信接続を処理します。これには、主に、発信要求への応答の処理と、AMI コールバック オブジェクトへの通知が含まれます。接続が双方向モードで使用されている場合、クライアント スレッド プールは着信コールバック要求もディスパッチします。サーバー スレッド プールは、着信接続を処理します。着信要求をディスパッチし、双方向接続の場合、発信要求への応答を処理します。デフォルトでは、これら 2 つのスレッド プールは、コミュニケータのすべてのオブジェクト アダプタによって共有されます。必要に応じて、代わりにプライベート スレッド プールを使用するように個々のオブジェクト アダプタを構成できます。
デフォルトでは、スレッドの数は 1 つだけです。なので、拡大してもいいです。
これらの数値を次の 3 つの方法で変更します。
- コマンドライン引数
- ハードコード
- 設定ファイル
ハードコードの例:
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);
}
これを参照してください:
于 2012-02-22T04:01:47.013 に答える