de.mvcsys.renscribe
Class HostPool

java.lang.Object
  |
  +--de.mvcsys.renscribe.HostPool
All Implemented Interfaces:
Runnable

public class HostPool
extends Object
implements Runnable

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


Inner Class Summary
 class HostPool.PoolElement
          innere Klasse für Hosts
 
Field Summary
protected  int currentSize
          Aktuelle Größe des Pools
protected  Vector elements
          Vektor mit aktiven Pool-Elementen
protected  String hostname
          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 logPathmon
          Externer Logger - Pathway-Monitor
protected  String logServer
          Externer Logger - Serverklasse
protected  int maxWait
          Warte-Zeit in Milli-Sekunden
protected  String name
          Name des Pools
protected  String password
          Kennwort
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  boolean trace
          Trace eingeschaltet?
protected  PrintWriter traceWriter
          Ausgabe-Writer für den Trace
protected  String userid
          Benutzername
 
Constructor Summary
HostPool(int size, String hostname, int port1, int port2, String userid, String password, boolean trace)
          Konstruktor - erzeugt einen Pool.
HostPool(int size, String hostname, int port1, int port2, String userid, String password, PrintWriter traceWriter)
          Konstruktor - erzeugt einen Pool.
HostPool(String name, int size, String hostname, int port1, int port2, String userid, String password, boolean trace)
          Konstruktor - erzeugt einen Pool
HostPool(String name, int size, String hostname, int port1, int port2, String userid, String password, PrintWriter traceWriter)
          Konstruktor - erzeugt einen Pool
 
Method Summary
protected  HostPool.PoolElement addElement()
          Erzeuge ein neues Element mit neuer Verbindung
static void clearConfig()
          Lösche die alte Konfiguration
static void config(Properties props)
          Konfiguriere die Pools.
protected  Host createHost()
          Erzeuge einen neue Host
 void deleteHost(Host conn)
          Lösche einen Host aus dem Pool
 void finalize()
          Finalizer - trennt alle Verbindungen und entfernt den Pool aus der Pool-Liste
protected static boolean getBoolProperty(Properties props, String poolname, String property, boolean defvalue)
          Hilfsfunktion zum Lesen einer Boolean-Property
 int getCurrentSize()
          Rückgabe der aktuellen Größe
 HostPool.PoolElement getElement(Host Host)
          Zugriff auf den Elemente-Vector
 HostPool.PoolElement getElement(int i)
          Zugriff auf den Elemente-Vector nach Index
 Enumeration getElements()
          Rückgabe des Elementvektors als Enumeration
 Host getHost()
          Factory für Verbindungen.
 Host getHost(int timeout)
          Factory für Verbindungen
 String getHostname()
          Rückgabe des Hostnamens
static HostPool getHostPool(String name)
          Ermittle einen Pool anhand seines Namens
 int getIdleTime()
          Rückgabe der Idle-Zeit
 int getIndex()
          Rückgabe der nächsten verwendeten Host
protected static int getIntProperty(Properties props, String poolname, String property, int defvalue)
          Hilfsfunktion zum Lesen einer Integer-Property
 String getLogPathmon()
          Rückgabe des Log-Pathmon
 String getLogServer()
          Rückgabe der Log-Serverklasse
 int getMaxWait()
          Rückgabe der Warte-Zeit
 String getName()
          Rückgabe des Namens
 String getPassword()
          Rückgabe des Kennwortes
 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
 String getUserid()
          Rückgabe der User-Id
 Object getUserObject(Host conn)
          Ermittle das UserObject zu einem Host.
static boolean isConfigured()
          Teste, ob schon Pools konfiguriert wurden
 boolean isDebug()
          Debugging eingeschaltet?
protected  Host newHost()
          Aufruf von new Host(hostname, port, userid, password, trace).
 void releaseHost(Host conn)
          Gebe die Host in den Pool zurück
 void run()
          Idle-Thread - löscht unbenutzte Verbindungen
 void setDebug(boolean trace)
          Setzen von trace
 void setIdleTime(int seconds)
          Setze die Idle-Zeit in Sekunden
 void setLog(String pathmon, String server)
          Setze den Log-Prozess.
 void setMaxWait(int maxWait)
          Setze die Warte-Zeit
 void setUserObject(Host conn, Object obj)
          Speichere ein UserObject zusammen mit einem Host.
 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

elements

protected Vector elements
Vektor mit aktiven Pool-Elementen

hostname

protected String hostname
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

logPathmon

protected String logPathmon
Externer Logger - Pathway-Monitor

logServer

protected String logServer
Externer Logger - Serverklasse

maxWait

protected int maxWait
Warte-Zeit in Milli-Sekunden

name

protected String name
Name des Pools

password

protected String password
Kennwort

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

trace

protected boolean trace
Trace eingeschaltet?

traceWriter

protected PrintWriter traceWriter
Ausgabe-Writer für den Trace

userid

protected String userid
Benutzername
Constructor Detail

HostPool

public HostPool(int size,
                String hostname,
                int port1,
                int port2,
                String userid,
                String password,
                boolean trace)
Konstruktor - erzeugt einen Pool. Der Pool wird nicht in die Pool-Liste eingetragen.
Parameters:
size - Maximale Anzahl der Hosts
hostname - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
userid - Benutzername
password - Kennwort
trace - Testinformationen auf "renscribe.trc" ausgeben

HostPool

public HostPool(int size,
                String hostname,
                int port1,
                int port2,
                String userid,
                String password,
                PrintWriter traceWriter)
Konstruktor - erzeugt einen Pool. Der Pool wird nicht in die Pool-Liste eingetragen.
Parameters:
size - Maximale Anzahl der Hosts
hostname - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
userid - Benutzername
password - Kennwort
traceWriter - Testinformationen auf diesen Writer ausgeben

HostPool

public HostPool(String name,
                int size,
                String hostname,
                int port1,
                int port2,
                String userid,
                String password,
                boolean trace)
Konstruktor - erzeugt einen Pool
Parameters:
name - Name des Pools, wird in die Pool-Liste eingetragen
size - Maximale Anzahl der Hosts
hostname - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
userid - Benutzername
password - Kennwort
trace - Testinformationen auf "renscribe.trc" ausgeben

HostPool

public HostPool(String name,
                int size,
                String hostname,
                int port1,
                int port2,
                String userid,
                String password,
                PrintWriter traceWriter)
Konstruktor - erzeugt einen Pool
Parameters:
name - Name des Pools, wird in die Pool-Liste eingetragen
size - Maximale Anzahl der Hosts
hostname - TCP/IP-Adresse des Hosts
port1 - TCP/IP-Port des Hosts (Anfang des Bereichs)
port2 - TCP/IP-Port des Hosts (Ende des Bereichs)
userid - Benutzername
password - Kennwort
traceWriter - Testinformationen auf diesen Writer ausgeben
Method Detail

addElement

protected HostPool.PoolElement addElement()
                                   throws IOException
Erzeuge ein neues Element mit neuer Verbindung
Returns:
das neue Element
Throws:
IOException - Allgemeiner Kommunikationsfehler

clearConfig

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

config

public static void config(Properties props)

Konfiguriere die Pools.

Beispiel einer Konfigurationsdatei für einen Pool:

  #
  #  renscribe.properties - 1 Pool
  #
  host=hp001
  port=741
  userid=GROUP.USER
  password=geheim
  trace=false
  poolsize=4
  maxwait=500
  idletime=600
  

Der Pool bekommt den Namen "renscribe".

Beispiel einer Konfigurationsdatei für mehrere Pools:

  #
  #  renscribe.properties
  #

  # Allgemeine Informationen

  host=hp001
  port1=741
  port2=741
  userid=GROUP.USER
  password=geheim
  trace=false

  # Pool Definitionen

  poolcount=2
  poolname.1=read
  poolname.2=update

  # Lese-Pool "read"

  read.poolsize=4
  read.maxwait=500
  read.idletime=600

  # Schreib-Pool "update"

  update.poolsize=1
  update.maxwait=5000
  update.idletime=600
  update.trace=true
  update.logpathmon=$PM
  update.logserver=R-LOGGER
  
Parameters:
props - Objekt mit den Konfigurationsdaten

createHost

protected Host createHost()
                   throws IOException
Erzeuge einen neue Host
Returns:
eine neue Verbindung mit den gespeicherten Parametern
Throws:
IOException - Allgemeiner Kommunikationsfehler

deleteHost

public void deleteHost(Host conn)
                throws IllegalArgumentException
Lösche einen Host aus dem Pool
Parameters:
conn - Host aus dem Pool
Throws:
IllegalArgumentException - Host wurde nicht gefunden

finalize

public void finalize()
Finalizer - trennt alle Verbindungen und entfernt den Pool aus der Pool-Liste
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

getCurrentSize

public int getCurrentSize()
Rückgabe der aktuellen Größe
Returns:
die aktuelle Größe des Pools

getElement

public HostPool.PoolElement getElement(Host Host)
                                throws IllegalArgumentException
Zugriff auf den Elemente-Vector
Parameters:
Host - Host
Returns:
das passende Pool-Element

getElement

public HostPool.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 Host getHost()
             throws IOException
Factory für Verbindungen. Die Wartezeit wird aus maxWait übernommen
Returns:
eine Verbindung mit den gespeicherten Parametern
Throws:
IOException - Allgemeiner Kommunikationsfehler

getHost

public Host getHost(int timeout)
             throws IOException
Factory für Verbindungen
Parameters:
timeout - Maximale Wartezeit in Millisekunden
Returns:
eine Verbindung mit den gespeicherten Parametern
Throws:
IOException - Allgemeiner Kommunikationsfehler

getHostname

public String getHostname()
Rückgabe des Hostnamens
Returns:
der Hostname

getHostPool

public static HostPool getHostPool(String name)
Ermittle einen Pool anhand seines Namens
Parameters:
name - - Poolname aus der Pool-Liste
Returns:
der Pool

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 Host
Returns:
der Index der nächsten verwendeten Host

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

getLogPathmon

public String getLogPathmon()
Rückgabe des Log-Pathmon
Returns:
Pathway-Monitor des Log-Prozesses

getLogServer

public String getLogServer()
Rückgabe der Log-Serverklasse
Returns:
Serverklasse des Log-Prozesses

getMaxWait

public int getMaxWait()
Rückgabe der Warte-Zeit
Returns:
die maximale Wartezeit beim Anfordern einer Verbindung in Millisekunden

getName

public String getName()
Rückgabe des Namens
Returns:
der Name des Pools

getPassword

public String getPassword()
Rückgabe des Kennwortes
Returns:
Kennwort

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

getUserid

public String getUserid()
Rückgabe der User-Id
Returns:
Benutzername

getUserObject

public Object getUserObject(Host conn)
                     throws IllegalArgumentException
Ermittle das UserObject zu einem Host.
Parameters:
conn - eine zuvor aus dem Pool entnommene Host
Returns:
Das gespeicherte UserObject.
Throws:
IllegalArgumentException - die Host stammt nicht aus dem Pool

isConfigured

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

isDebug

public boolean isDebug()
Debugging eingeschaltet?

newHost

protected Host newHost()
                throws IOException

Aufruf von new Host(hostname, port, userid, password, trace).

Die Methode wird von abgeleiteten Klassen überschrieben.

releaseHost

public void releaseHost(Host conn)
                 throws IllegalArgumentException
Gebe die Host in den Pool zurück
Parameters:
conn - Host, die vorher aus dem Pool entnommen wurde
Throws:
IllegalArgumentException - Host wurde nicht gefunden

run

public void run()
Idle-Thread - löscht unbenutzte Verbindungen
Specified by:
run in interface Runnable

setDebug

public void setDebug(boolean trace)
Setzen von trace
Parameters:
trace - true erzeugt Trace-Ausgaben

setIdleTime

public void setIdleTime(int seconds)
Setze die Idle-Zeit in Sekunden
Parameters:
seconds - Zeit: 0 - Idle-Thread ausschalten

setLog

public void setLog(String pathmon,
                   String server)
Setze den Log-Prozess. Alle Nachrichten werden an diesen Prozess übertragen. Der Eintrag wirkt sich nur auf neue Verbindungen aus.
Parameters:
pathmon - Name des Pathway-Monitors
server - Name der Serverklasse

setMaxWait

public void setMaxWait(int maxWait)
Setze die Warte-Zeit
Parameters:
maxWait - die maximale Wartezeit beim Anfordern einer Verbindung in Millisekunden

setUserObject

public void setUserObject(Host conn,
                          Object obj)
                   throws IllegalArgumentException
Speichere ein UserObject zusammen mit einem Host. Dies dient dazu, komplexe Objekte wie MessageElement-Strukturen pro Host nur einmal zu erzeugen und dann wieder zu benutzen, wenn der Host benötigt wird. Es kann nur ein Objekt gespeichert werden, benutzen Sie eine Collection oder eine eigene Klasse, um mehrere Informationen abzulegen.
Parameters:
conn - eine zuvor aus dem Pool entnommene Host
obj - Das zu speichernde UserObject.
Throws:
IllegalArgumentException - die Host stammt nicht aus dem Pool

toString

public String toString()
toString fuer Debugging
Overrides:
toString in class Object


Copyright © 2002 MvC Systemsoftware.