janus.net
Class ConnectionPool

java.lang.Object
  extended by janus.net.ConnectionPool
All Implemented Interfaces:
Runnable

public class ConnectionPool
extends Object
implements Runnable

Diese Klasse stellt einen Pool von Connection-Objekten zur Verfügung


Nested Class Summary
 class ConnectionPool.PoolElement
          innere Klasse für Connections
 
Field Summary
protected  int currentSize
          Aktuelle Größe des Pools
protected  boolean debug
          Debugging-Flag
protected  PrintWriter debugStream
          PrintWriter für Debugging
protected static PrintWriter debugStreamStatic
          PrintWriter für Debugging (static)
static int DEFAULT_TIMEOUT
          Standardwert für den Timeout bei getConnection(int)
protected  Vector elements
          Vektor mit aktiven Pool-Elementen
protected  String host
          TCP/IP-Adresse des Hosts
protected  Thread idleThread
          Der Idle-Thread
protected  long idleTime
          Idle-Zeit in Milli-Sekunden
protected  int index
          Index der nächsten zu vergebenden Verbindung
protected  String name
          Name des Pools
protected  String pathmon
          Initialisierungs-Information (Pathmon-Name)
protected static Hashtable poolTable
          Verwaltung mehrerer Pools mit Namen
protected  int port
          TCP/IP-Port des Hosts (letzter benutzer Port)
protected  int port1
          TCP/IP-Port des Hosts (Anfang des Bereichs)
protected  int port2
          TCP/IP-Port des Hosts (Ende des Bereichs)
protected  int size
          Maximale Größe des Pools
protected  int timeout
          Default-Timeout
 
Constructor Summary
ConnectionPool(int size, String host, int port1, int port2, String pathmon, boolean debug)
          Konstruktor - erzeugt einen Pool
ConnectionPool(int size, String host, int port1, int port2, String pathmon, boolean compress, boolean debug)
          Konstruktor - erzeugt einen Pool
ConnectionPool(int size, String host, int port1, int port2, String pathmon, boolean compress, PrintWriter stream)
          Konstruktor - erzeugt einen Pool
ConnectionPool(int size, String host, int port1, int port2, String pathmon, boolean compress, String file)
          Konstruktor - erzeugt einen Pool
ConnectionPool(int size, String host, int port1, int port2, String pathmon, PrintWriter stream)
          Konstruktor - erzeugt einen Pool
ConnectionPool(int size, String host, int port1, int port2, String pathmon, String file)
          Konstruktor - erzeugt einen Pool
ConnectionPool(String name, int size, String host, int port1, int port2, String pathmon, boolean debug)
          Konstruktor - erzeugt einen benamten Pool
ConnectionPool(String name, int size, String host, int port1, int port2, String pathmon, PrintWriter stream)
          Konstruktor - erzeugt einen benamten Pool
ConnectionPool(String name, int size, String host, int port1, int port2, String pathmon, String file)
          Konstruktor - erzeugt einen benamten Pool
 
Method Summary
protected  ConnectionPool.PoolElement addElement()
          Erzeuge ein neues Element mit neuer Verbindung
static void clearConfig()
          Lösche die alte Konfiguration
static void configure(Properties props)
          Konfiguriere die Pools.
protected  Connection createConnection()
          Erzeuge eine neue Connection
 void deleteConnection(Connection conn)
          Lösche eine Connection aus dem Pool
 void finalize()
          Finalizer - trennt alle Verbindungen
protected static boolean getBoolProperty(Properties props, String poolname, String property, boolean defvalue)
          Hilfsfunktion zum Lesen einer Boolean-Property
 Connection getConnection()
          Factory für Verbindungen.
 Connection getConnection(int timeout)
          Factory für Verbindungen
static ConnectionPool getConnectionPool(String name)
          Ermittle einen Pool anhand seines Namens
 int getCurrentSize()
          Rückgabe der aktuellen Größe
 PrintWriter getDebugStream()
          Rückgabe des DebugStream
 ConnectionPool.PoolElement getElement(Connection connection)
          Zugriff auf den Elemente-Vector
 ConnectionPool.PoolElement getElement(int i)
          Zugriff auf den Elemente-Vector nach Index
 Enumeration getElements()
          Rückgabe des Elementvektors als Enumeration
 String getHost()
          Rückgabe des Hostnamens
 int getIdleTime()
          Rückgabe der Idle-Zeit
 int getIndex()
          Rückgabe der nächsten verwendeten Connection
protected static int getIntProperty(Properties props, String poolname, String property, int defvalue)
          Hilfsfunktion zum Lesen einer Integer-Property
 String getName()
          Rückgabe des Namens
 String getPathmon()
          Rückgabe des Pathmon-Namens
static ConnectionPool getPool(String pool)
          Gebe einen benamten Pool zurück
static Hashtable getPools()
          Gebe alle Pools zurück
 int getPort()
          Rückgabe des zuletzt verwendeten TCP/IP-Ports
 int getPort1()
          Rückgabe des ersten TCP/IP-Ports
 int getPort2()
          Rückgabe des zweiten TCP/IP-Ports
protected static String getProperty(Properties props, String poolname, String property, String defvalue)
          Hilfsfunktion zum Lesen einer Property
 int getSize()
          Rückgabe der Größe
 int getTimeout()
          Rückgabe des Standard-Timeouts für getConnection(int)
 Object getUserObject(Connection conn)
          Ermittle das UserObject zu einer Connection.
protected  void init(String name, int size, String host, int port1, int port2, String pathmon, PrintWriter stream)
          Initialisierung (Konstruktor-Helper)
 boolean isCompressed()
          Rückgabe des Kompressions-Flags
static boolean isConfigured()
          Teste, ob schon Pools konfiguriert wurden
 void releaseConnection(Connection conn)
          Gebe die Connection in den Pool zurück
 void run()
          Idle-Thread - löscht unbenutzte Verbindungen
 void setDebugStream(PrintWriter stream)
          Setzen des debugStream und debugStatus
 void setDebugStream(String file)
          Setzen des debugStream und debugStatus
static void setDebugStreamStatic(PrintWriter stream)
          Setzen des debugStream und debugStatus (Static)
 void setIdleTime(int seconds)
          Setze die Idle-Zeit in Sekunden
 void setTimeout(int timeout)
          Setze den Standard-Timeout für getConnection(int)
 void setUserObject(Connection conn, Object obj)
          Speichere ein UserObject zusammen mit einer Connection.
 String toString()
          toString fuer Debugging
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

currentSize

protected int currentSize
Aktuelle Größe des Pools


debug

protected boolean debug
Debugging-Flag


debugStream

protected PrintWriter debugStream
PrintWriter für Debugging


debugStreamStatic

protected static PrintWriter debugStreamStatic
PrintWriter für Debugging (static)


DEFAULT_TIMEOUT

public static final int DEFAULT_TIMEOUT
Standardwert für den Timeout bei getConnection(int)

See Also:
Constant Field Values

elements

protected Vector elements
Vektor mit aktiven Pool-Elementen


host

protected String host
TCP/IP-Adresse des Hosts


idleThread

protected Thread idleThread
Der Idle-Thread


idleTime

protected long idleTime
Idle-Zeit in Milli-Sekunden


index

protected int index
Index der nächsten zu vergebenden Verbindung


name

protected String name
Name des Pools


pathmon

protected String pathmon
Initialisierungs-Information (Pathmon-Name)


poolTable

protected static Hashtable poolTable
Verwaltung mehrerer Pools mit Namen


port

protected int port
TCP/IP-Port des Hosts (letzter benutzer Port)


port1

protected int port1
TCP/IP-Port des Hosts (Anfang des Bereichs)


port2

protected int port2
TCP/IP-Port des Hosts (Ende des Bereichs)


size

protected int size
Maximale Größe des Pools


timeout

protected int timeout
Default-Timeout

Constructor Detail

ConnectionPool

public ConnectionPool(int size,
                      String host,
                      int port1,
                      int port2,
                      String pathmon,
                      boolean debug)
Konstruktor - erzeugt einen Pool

Parameters:
size - Maximale Anzahl der Connections
host - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
pathmon - Initialisierungs-Information (Pathmon-Name)
debug - Testinformationen auf Konsole ausgeben

ConnectionPool

public ConnectionPool(int size,
                      String host,
                      int port1,
                      int port2,
                      String pathmon,
                      boolean compress,
                      boolean debug)
Konstruktor - erzeugt einen Pool

Parameters:
size - Maximale Anzahl der Connections
host - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
pathmon - Initialisierungs-Information (Pathmon-Name)
compress - Kompression einschalten (ohne Funktion)
debug - Testinformationen auf Konsole ausgeben

ConnectionPool

public ConnectionPool(int size,
                      String host,
                      int port1,
                      int port2,
                      String pathmon,
                      boolean compress,
                      PrintWriter stream)
Konstruktor - erzeugt einen Pool

Parameters:
size - Maximale Anzahl der Connections
host - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
pathmon - Initialisierungs-Information (Pathmon-Name)
compress - Kompression einschalten (ohne Funktion)
stream - PrintWriter für die Debug-Ausgaben

ConnectionPool

public ConnectionPool(int size,
                      String host,
                      int port1,
                      int port2,
                      String pathmon,
                      boolean compress,
                      String file)
Konstruktor - erzeugt einen Pool

Parameters:
size - Maximale Anzahl der Connections
host - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
pathmon - Initialisierungs-Information (Pathmon-Name)
compress - Kompression einschalten (ohne Funktion)
file - Testinformationen in Debug-Datei ausgeben

ConnectionPool

public ConnectionPool(int size,
                      String host,
                      int port1,
                      int port2,
                      String pathmon,
                      PrintWriter stream)
Konstruktor - erzeugt einen Pool

Parameters:
size - Maximale Anzahl der Connections
host - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
pathmon - Initialisierungs-Information (Pathmon-Name)
stream - PrintWriter für die Debug-Ausgaben

ConnectionPool

public ConnectionPool(int size,
                      String host,
                      int port1,
                      int port2,
                      String pathmon,
                      String file)
Konstruktor - erzeugt einen Pool

Parameters:
size - Maximale Anzahl der Connections
host - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
pathmon - Initialisierungs-Information (Pathmon-Name)
file - Testinformationen in Debug-Datei ausgeben

ConnectionPool

public ConnectionPool(String name,
                      int size,
                      String host,
                      int port1,
                      int port2,
                      String pathmon,
                      boolean debug)
Konstruktor - erzeugt einen benamten Pool

Parameters:
name - Name des Pools
size - Maximale Anzahl der Connections
host - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
pathmon - Initialisierungs-Information (Pathmon-Name)
debug - Testinformationen auf Konsole ausgeben

ConnectionPool

public ConnectionPool(String name,
                      int size,
                      String host,
                      int port1,
                      int port2,
                      String pathmon,
                      PrintWriter stream)
Konstruktor - erzeugt einen benamten Pool

Parameters:
name - Name des Pools
size - Maximale Anzahl der Connections
host - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
pathmon - Initialisierungs-Information (Pathmon-Name)
stream - PrintWriter für die Debug-Ausgaben

ConnectionPool

public ConnectionPool(String name,
                      int size,
                      String host,
                      int port1,
                      int port2,
                      String pathmon,
                      String file)
Konstruktor - erzeugt einen benamten Pool

Parameters:
name - Name des Pools
size - Maximale Anzahl der Connections
host - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
pathmon - Initialisierungs-Information (Pathmon-Name)
file - Testinformationen in Debug-Datei ausgeben
Method Detail

addElement

protected ConnectionPool.PoolElement addElement()
                                         throws TandemException,
                                                CommException
Erzeuge ein neues Element mit neuer Verbindung

Returns:
das neue Element
Throws:
CommException - Allgemeiner Kommunikationsfehler
TandemException - Tandem-Fehler

clearConfig

public static void clearConfig()
Lösche die alte Konfiguration


configure

public static void configure(Properties props)

Konfiguriere die Pools.

Beispiel einer Konfigurationsdatei für einen Pool:

  #
  #  janus.properties - 1 Pool
  #
  host=tandem
  pathmon=$PM
  port=2000
  debug=false
  poolsize=10
  maxwait=500
  idletime=600
  timeout=30000
  

Der Pool bekommt den Namen "janus".

Beispiel einer Konfigurationsdatei für mehrere Pools:

  #
  #  janus.properties
  #

  # Allgemeine Informationen

  host=tandem
  pathmon=$PM
  port1=2000
  port2=2000
  debug=false

  # Pool Definitionen

  poolcount=2
  poolname.1=prod
  poolname.2=test

  # Produktion

  prod.poolsize=10
  prod.idletime=600
  prod.timeout=10000

  # Test

  test.poolsize=2
  test.host=tdmdev
  test.pathmon=$TEST
  test.idletime=600
  test.debug=true
  prod.timeout=30000
  

Parameters:
props - Objekt mit den Konfigurationsdaten

createConnection

protected Connection createConnection()
                               throws CommException,
                                      TandemException
Erzeuge eine neue Connection

Returns:
eine neue Verbindung mit den gespeicherten Parametern
Throws:
CommException - Allgemeiner Kommunikationsfehler
TandemException - Tandem-Fehler

deleteConnection

public void deleteConnection(Connection conn)
                      throws IllegalArgumentException
Lösche eine Connection aus dem Pool

Parameters:
conn - Connection aus dem Pool
Throws:
IllegalArgumentException - Connection wurde nicht gefunden

finalize

public void finalize()
Finalizer - trennt alle Verbindungen

Overrides:
finalize in class Object

getBoolProperty

protected static boolean getBoolProperty(Properties props,
                                         String poolname,
                                         String property,
                                         boolean defvalue)
Hilfsfunktion zum Lesen einer Boolean-Property

Parameters:
props - Das Objekt mit den Konfigurationsdaten
poolname - Name des Pools (Prefix der Property)
property - Name der Property
defvalue - Default-Wert
Returns:
Wert der Property

getConnection

public Connection getConnection()
                         throws TandemException,
                                CommException
Factory für Verbindungen. Benutzt den Standard-Timeout.

Returns:
eine Verbindung mit den gespeicherten Parametern
Throws:
CommException - Allgemeiner Kommunikationsfehler
TandemException - Tandem-Fehler

getConnection

public Connection getConnection(int timeout)
                         throws TandemException,
                                CommException
Factory für Verbindungen

Parameters:
timeout - Maximale Wartezeit in Millisekunden
Returns:
eine Verbindung mit den gespeicherten Parametern
Throws:
CommException - Allgemeiner Kommunikationsfehler
TandemException - Tandem-Fehler

getConnectionPool

public static ConnectionPool getConnectionPool(String name)
Ermittle einen Pool anhand seines Namens

Parameters:
name - - Poolname aus der Pool-Liste
Returns:
der Pool

getCurrentSize

public int getCurrentSize()
Rückgabe der aktuellen Größe

Returns:
die aktuelle Größe des Pools

getDebugStream

public PrintWriter getDebugStream()
Rückgabe des DebugStream

Returns:
der Ausgabestrom für den Trace

getElement

public ConnectionPool.PoolElement getElement(Connection connection)
                                      throws IllegalArgumentException
Zugriff auf den Elemente-Vector

Parameters:
connection - Connection
Returns:
das passende Pool-Element
Throws:
IllegalArgumentException

getElement

public ConnectionPool.PoolElement getElement(int i)
Zugriff auf den Elemente-Vector nach Index

Parameters:
i - Index im Vektor
Returns:
das i-te Element des Vectors, kann null sein

getElements

public Enumeration getElements()
Rückgabe des Elementvektors als Enumeration

Returns:
das Ergebnis von elements.elements()

getHost

public String getHost()
Rückgabe des Hostnamens

Returns:
der Hostname

getIdleTime

public int getIdleTime()
Rückgabe der Idle-Zeit

Returns:
die Zeit bis zum automatischen Abbau einer Verbindung in Sekunden

getIndex

public int getIndex()
Rückgabe der nächsten verwendeten Connection

Returns:
der Index der nächsten verwendeten Connection

getIntProperty

protected static int getIntProperty(Properties props,
                                    String poolname,
                                    String property,
                                    int defvalue)
Hilfsfunktion zum Lesen einer Integer-Property

Parameters:
props - Das Objekt mit den Konfigurationsdaten
poolname - Name des Pools (Prefix der Property)
property - Name der Property
defvalue - Default-Wert
Returns:
Wert der Property

getName

public String getName()
Rückgabe des Namens

Returns:
der Name des Pools

getPathmon

public String getPathmon()
Rückgabe des Pathmon-Namens

Returns:
der Text, der bei der Initialisierung der Connection an den Host gesendet wird (Name des Pathmon-Prozesses)

getPool

public static ConnectionPool getPool(String pool)
Gebe einen benamten Pool zurück

Parameters:
pool - Name des Pools

getPools

public static Hashtable getPools()
Gebe alle Pools zurück

Returns:
Die Hashtable mit allen Pools

getPort

public int getPort()
Rückgabe des zuletzt verwendeten TCP/IP-Ports

Returns:
der zuletzt verwendete Portwert

getPort1

public int getPort1()
Rückgabe des ersten TCP/IP-Ports

Returns:
der untere Portwert

getPort2

public int getPort2()
Rückgabe des zweiten TCP/IP-Ports

Returns:
der obere Portwert

getProperty

protected static String getProperty(Properties props,
                                    String poolname,
                                    String property,
                                    String defvalue)
Hilfsfunktion zum Lesen einer Property

Parameters:
props - Das Objekt mit den Konfigurationsdaten
poolname - Name des Pools (Prefix der Property)
property - Name der Property
defvalue - Default-Wert
Returns:
Wert der Property

getSize

public int getSize()
Rückgabe der Größe

Returns:
die Maximalgröße des Pools

getTimeout

public int getTimeout()
Rückgabe des Standard-Timeouts für getConnection(int)

Returns:
timeout in ms

getUserObject

public Object getUserObject(Connection conn)
                     throws IllegalArgumentException
Ermittle das UserObject zu einer Connection.

Parameters:
conn - eine zuvor aus dem Pool entnommene Connection
Returns:
Das gespeicherte UserObject.
Throws:
IllegalArgumentException - die Connection stammt nicht aus dem Pool

init

protected void init(String name,
                    int size,
                    String host,
                    int port1,
                    int port2,
                    String pathmon,
                    PrintWriter stream)
Initialisierung (Konstruktor-Helper)

Parameters:
name - Name des Pools
size - Maximale Anzahl der Connections
host - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
pathmon - Initialisierungs-Information (Pathmon-Name)
stream - PrintWriter für die Debug-Ausgaben

isCompressed

public boolean isCompressed()
Rückgabe des Kompressions-Flags

Returns:
false - Komprimierung wird nicht mehr unterst&uuuml;tzt

isConfigured

public static boolean isConfigured()
Teste, ob schon Pools konfiguriert wurden


releaseConnection

public void releaseConnection(Connection conn)
                       throws IllegalArgumentException
Gebe die Connection in den Pool zurück

Parameters:
conn - Connection, die vorher aus dem Pool entnommen wurde
Throws:
IllegalArgumentException - Connection wurde nicht gefunden

run

public void run()
Idle-Thread - löscht unbenutzte Verbindungen

Specified by:
run in interface Runnable

setDebugStream

public void setDebugStream(PrintWriter stream)
Setzen des debugStream und debugStatus

Parameters:
stream - Ausgabestrom füer den Trace

setDebugStream

public void setDebugStream(String file)
Setzen des debugStream und debugStatus

Parameters:
file - Dateiname füer Debugausgaben oder ein Leerstring bzw. null für die Standardausgabe

setDebugStreamStatic

public static void setDebugStreamStatic(PrintWriter stream)
Setzen des debugStream und debugStatus (Static)

Parameters:
stream - Ausgabestrom füer den Trace

setIdleTime

public void setIdleTime(int seconds)
Setze die Idle-Zeit in Sekunden

Parameters:
seconds - Zeit: 0 - Idle-Thread ausschalten

setTimeout

public void setTimeout(int timeout)
Setze den Standard-Timeout für getConnection(int)

Parameters:
timeout -

setUserObject

public void setUserObject(Connection conn,
                          Object obj)
                   throws IllegalArgumentException
Speichere ein UserObject zusammen mit einer Connection. Dies dient dazu, komplexe Objekte wie MessageElement-Strukturen pro Connection nur einmal zu erzeugen und dann wieder zu benutzen, wenn die Connection ben”tigt wird. Es kann nur ein Objekt gespeichert werden, benutzten Sie eine Collection oder eine eigene Klasse, um mehrere Informationen abzulegen.

Parameters:
conn - eine zuvor aus dem Pool entnommene Connection
obj - Das zu speichernde UserObject.
Throws:
IllegalArgumentException - die Connection stammt nicht aus dem Pool

toString

public String toString()
toString fuer Debugging

Overrides:
toString in class Object


Copyright © 2008 MvC Systemsoftware.