Der Proxy-Server bildet die Kommunikationsanforderungen vieler Clients auf die Resourcen eines Connection-Pools ab. Es geht darum, auf dem NonStop-Host nur so viele Kommunikationsprozesse wie nötig vorzuhalten und nicht für jeden Client einen eigenen Prozess.
Die Clients verbinden sich nicht direkt mit dem Host sondern stattdessen mit dem Proxy-Server. Dieser reserviert bei Bedarf eine Verbindung zum Host und wickelt über diese die Kommunikation ab. Die Hostverbindung wird an den Pool zurückgegeben, sobald keine Datenbank-Transaktion mehr offen ist bzw. der Client seine Verbindung geschlossen hat.Die Pool-Konfiguration erfolgt in der Datei pool.properties im Verzeichnis WEB-INF. Eine Beispielkonfiguration zeigt die folgende Datei:
#
# pool.properties
#
poolcount=2
poolname.1=prodpool
poolname.2=testpool
prodpool.host=tandem
prodpool.port=2000
prodpool.pathmon=$BDE
prodpool.poolsize=4
prodpool.idletime=600
prodpool.debug=false
testpool.host=mac
testpool.port=2222
testpool.pathmon=$TEST
testpool.poolsize=2
testpool.idletime=30
testpool.debug=true
Sie definiert zwei Pools mit den Namen "prodpool" bzw. "testpool". Eine Beschreibung der Parameter findet sich in der API-Dokumentation der Klasse janus.net.ConnectionPool.
#
# service.properties
#
active=true
services=prodproxy,testproxy,Echo
#
# Gemeinsame Paramter
#
class=ProxyService
address=0.0.0.0
timeout=10000
autorelease=true
debug=false
#
# Parameter fuer prodproxy
#
prodproxy.port=2000
prodproxy.pool=prodpool
#
# Paramter fuer testproxy
#
testproxy.port=2222
testproxy.timeout=20000
testproxy.pool=testpool
testproxy.debug=true
testproxy.autorelease=false
#
# Paramter fuer Echo
#
Echo.class=EchoService
Echo.port=2001
Echo.debug=true
Echo.args=1500
Hier werden zwei Proxy-Server und ein Test-Server (EchoService) definiert. Alle Zeiten sind in Millisekunden angegeben. Die wichtigsten Parameter sind die folgenden:
Parameter | Bedeutung |
---|---|
class | Name der Java-Klasse, die den Service implementiert. Die Klassen liegen im Package janus.web.service. |
address | IP-Interface, auf dem der Dienst Verbindungen annimmt. "0.0.0.0" steht für alle Interfaces, localhost für rein internen Zugriff, also nur für Prozesse auf demselben Rechner. |
port | Der TCP-Port, auf dem Verbindungen angenommen werden. Jeder Port darf nur genau einem Dienst zugewisen werden. |
timeout | Maximale Wartezeit auf eine freie Verbindung. Ist innerhalb dieser Zeit keine Verbindung aus dem Pool frei, wird ein Fehler an den Client zurückgemeldet. |
autorelease | Wenn dieser Parameter gesetzt ist (default), werden Verbindungen immer dann an den Pool zurückgegeben, wenn gerade keine Datenbank-Transaktion aktiv ist. Wenn Sie UMS-Verbindungen benötigen, dann muss der Parameter auf false gesetzt werden. In diesem Fall bleibt die Host-Verbindung reserviert, bis der Client seine Verbindung zum Proxy-Server getrennt hat. |
debug | Setzen Sie diesen Paramter, wenn sie Traceausgaben im Logfile Janus-Service.trc machen wollen. Sie können den kompletten Datenverkehr aufzeichnen. |
Echo.args | Der Testserver antwortet einfach mit der gesendeten Nachricht. Das Argument ist eine Verzögerungszeit in Millisekunden. Wenn der Client eine UMS-Verbindung aufbaut (Connection.acceptNew()), dann sendet dieser Server alle 30 Sekunden eine UMS-Nachricht an den Client. |
Weitere Services sind in Planung. Mittelfristig soll die Webanwendung die bisherige Janus/SAP-Anwendung ablösen.