intra-mart(R)
5.0

jp.co.intra_mart.common.aid.jdk.java.net
クラス SocketPool

java.lang.Object
  拡張jp.co.intra_mart.common.aid.jdk.java.net.AbstractSocketConnectionDistributor
      拡張jp.co.intra_mart.common.aid.jdk.java.net.SocketPool
すべての実装インタフェース:
SocketConnectionDistributor, SocketConnectionManager

public class SocketPool
extends AbstractSocketConnectionDistributor
implements SocketConnectionManager

このクラスは、通信ソケットをプールする機能を提供します。

プール機能を利用することにより少ないソケットを複数のプログラムから 利用できるようになります。
このプールは、1つのインスタンスに付き1つの専用スレッドを持ちます。 プールは専用のスレッドにより管理され、一定時間に1つのコネクションが 順に破棄されていきます。したがって、コネクションを全く使用しないまま 長い時間が経過すると、このプール中にプールされているソケット・コネクションは 0個になります。

導入されたバージョン:
version 5.0

コンストラクタの概要
SocketPool(String address, int port)
          ソケットプールを構築します。
SocketPool(String address, int port, int capacity)
          ソケットプールを構築します。
 
メソッドの概要
 void addCloseSocketEventListener(SocketEventListener listener)
          ソケットをクローズしたイベントを通知するためのリスナーを 設定します。
 void addCreateSocketEventListener(SocketEventListener listener)
          ソケットを新規に作成したイベントを通知するためのリスナーを 設定します。
 void clean()
          プール中のコネクションをすべて破棄します。
 SocketConnection connection()
          コネクションの取得。
 void destroy()
          このプールを破棄します。
 boolean eject(SocketConnection connection)
          指定コネクションをこのプールの管理から切り離します。
protected  void finalize()
          このオブジェクトへの参照はもうないとガーベージコレクションによって 判断されたときに、ガーベージコレクタによって呼び出されます。
 int getCapacity()
          コネクション作成最大数の取得。
 Collection getCloseSocketEventListeners()
          このプールに登録されている ソケットをクローズしたイベントを通知するためのリスナーを 返します。
 Collection getCreateSocketEventListeners()
          このプールに登録されている ソケットを新規に作成したイベントを通知するためのリスナーを 返します。
 int getSize()
          このプールが現在管理しているコネクション数です。
 int usableConnection()
          現在待機中のコネクションをです。
 
クラス jp.co.intra_mart.common.aid.jdk.java.net.AbstractSocketConnectionDistributor から継承したメソッド
createSocket, getAddress, getPort
 
クラス java.lang.Object から継承したメソッド
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

SocketPool

public SocketPool(String address,
                  int port)
ソケットプールを構築します。

このプールで管理できるソケットコネクションは 1 個になります。

パラメータ:
address - 接続するサーバのアドレス
port - 接続するサーバがサービスを提供しているポート

SocketPool

public SocketPool(String address,
                  int port,
                  int capacity)
ソケットプールを構築します。

コネクションは動的に生成されます。 capacity 個よりも多くのコネクション要求があった場合、 コネクションが開放されるまで待ち状態になります。
capacity にはプールの性質上、 1 以上の値を指定して下さい。 capacity に 1 より小さな値を指定した場合、プール数は 1 になります。

パラメータ:
address - 接続するサーバのアドレス
port - 接続するサーバがサービスを提供しているポート
capacity - 接続コネクションの最大数
メソッドの詳細

addCreateSocketEventListener

public void addCreateSocketEventListener(SocketEventListener listener)
ソケットを新規に作成したイベントを通知するためのリスナーを 設定します。 このメソッドで追加したリスナーには、このプールで新規にソケットが 作成されたときに、そのソケットをメソッド引数として handleSocketEventメソッドが実行されます。

パラメータ:
listener - ソケットイベントリスナー

getCreateSocketEventListeners

public Collection getCreateSocketEventListeners()
このプールに登録されている ソケットを新規に作成したイベントを通知するためのリスナーを 返します。 このメソッドの戻り値となる Collection の各要素は SocketEventListener 型オブジェクトです。

戻り値:
SocketEventListener を要素とする Collection

addCloseSocketEventListener

public void addCloseSocketEventListener(SocketEventListener listener)
ソケットをクローズしたイベントを通知するためのリスナーを 設定します。 このメソッドで追加したリスナーには、このプールのソケットが クローズされたときに、そのソケットをメソッド引数として handleSocketEventメソッドが実行されます。

パラメータ:
listener - ソケットイベントリスナー

getCloseSocketEventListeners

public Collection getCloseSocketEventListeners()
このプールに登録されている ソケットをクローズしたイベントを通知するためのリスナーを 返します。 このメソッドの戻り値となる Collection の各要素は SocketEventListener 型オブジェクトです。

戻り値:
SocketEventListener を要素とする Collection

getCapacity

public int getCapacity()
コネクション作成最大数の取得。

定義:
インタフェース SocketConnectionManager 内の getCapacity
戻り値:
このプールにより作成されるコネクションの最大数

getSize

public int getSize()
このプールが現在管理しているコネクション数です。

この数は、最小が 0 で最大が getCapacity() メソッドにより得られる値の 間で変動します。

定義:
インタフェース SocketConnectionManager 内の getSize
戻り値:
有効なコネクション数
導入されたバージョン:
version 4.2

usableConnection

public int usableConnection()
現在待機中のコネクションをです。

定義:
インタフェース SocketConnectionManager 内の usableConnection
戻り値:
待機中のコネクション数

connection

public SocketConnection connection()
                            throws IOException
コネクションの取得。

プール中にコネクションが待機している場合にはプールの中から 待機中のコネクションを返却します。 プール中にコネクションが存在しない場合には、 新しいコネクションを生成して返します。

定義:
インタフェース SocketConnectionDistributor 内の connection
戻り値:
通信用インスタンス
例外:
IOException - ソケットの接続エラー
関連項目:
SocketConnection

eject

public boolean eject(SocketConnection connection)
指定コネクションをこのプールの管理から切り離します。

指定コネクションがこのプールに管理されていたものなら、 このメソッド実行後はこのプールの管理するコネクションが1つ減少するので、 新たにコネクションを作成することができるようになります。

指定のコネクションをこのプールが管理していて他のスレッドによって 使用(connection() メソッドにより取得)されていない場合 true を 返します。指定のコネクションがこのプールにより管理されているもの であった場合でも、他のスレッドにより使用中の場合は false を返します。

パラメータ:
connection - 管理から切り離すコネクション
戻り値:
コネクションの切り離しに成功した場合 true

destroy

public void destroy()
このプールを破棄します。

定義:
インタフェース SocketConnectionDistributor 内の destroy

clean

public void clean()
プール中のコネクションをすべて破棄します。

定義:
インタフェース SocketConnectionDistributor 内の clean

finalize

protected void finalize()
                 throws Throwable
このオブジェクトへの参照はもうないとガーベージコレクションによって 判断されたときに、ガーベージコレクタによって呼び出されます。 SocketPool クラスは、このメソッドによりオブジェクトの破棄前に リソースのクリーンアップをします。

例外:
Throwable

intra-mart(R)
5.0

Copyright © 2000-2005 NTT DATA INTRAMART CO.,LTD. All Rights Reserved.