com.infoteria.asteria.connection
Class ConnectionCloser

java.lang.Object
  |
  +--com.infoteria.asteria.connection.ConnectionCloser

public class ConnectionCloser
extends java.lang.Object

コネクションを閉じるためのクラス。
EngineImplで1つだけインスタンスを持つ。

MAIN_THREAD_LOOP_SLEEP_MILLISごとにループするスレッドがtermまで動き続ける。
ループ中にcloseするconnectionが見つかると、別スレッドでConnection.close()を実行する。
close用のスレッドの最大数はMAX_CLOSING_SIZE_PROPERTY_NAME+1個です。
スレッド最大数のコネクションがclose処理で無応答状態になると、他のコネクションもclose処理に入ることなく待つことになる。


Inner Class Summary
static class ConnectionCloser.ClosingTask
           
 
Method Summary
 void add(Connection connection)
           
static ConnectionCloser getInstance()
           
 Connection getNextCloseConnection()
          次にクローズするべきコネクションを取得します。
すでにクローズ処理中のコネクションと同じ(種類の)コネクションは取得されません。
クローズ処理中のコネクションが最大サイズに達した場合でも、RDBコネクション以外のコネクションは1つだけ取得されます。つまり、実質的には、最大サイズは最大サイズ+1となっています。
 void start()
           
 void term()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static ConnectionCloser getInstance()

start

public void start()

term

public void term()

add

public void add(Connection connection)

getNextCloseConnection

public Connection getNextCloseConnection()
次にクローズするべきコネクションを取得します。
すでにクローズ処理中のコネクションと同じ(種類の)コネクションは取得されません。
クローズ処理中のコネクションが最大サイズに達した場合でも、RDBコネクション以外のコネクションは1つだけ取得されます。つまり、実質的には、最大サイズは最大サイズ+1となっています。
Returns:
クローズするべきコネクションを返します。クローズするべきコネクションがない場合はnull。