AMETAS.pns
Class PlaceNameServer

java.lang.Object
  extended byAMETAS.pns.PlaceNameServer

public class PlaceNameServer
extends java.lang.Object

Startet Instanzen, die mit PNS-Klienten kommunizieren. Aufbau der Konfigurationsdatei:

'#'           Kommentar
'port'        Portnummer
'domain'      Domänenname Dateiname (evtl. mehrfach)
'default'     Hostname/IP Portnummer
'server'      Domänenname Hostname/IP Portnummer
'cleanup'     Millisekunden
'maxclients'  Maximale Anzahl von Klienten 
'masterkey'   Hashcode für den Master-Key
Der PlaceNameServer ist bewusst eigenständig entworfen worden. Einerseits wird keine Stelle mehr belastet (so dass man diese ohne schlechtes Gewissen auch stoppen kann), andererseits kann man den PNS auch außerhalb von Java realisieren.

See Also:
PNSResponder

Field Summary
static short ACCESS_DENIED
          Keine Berechtigung, diesen Stelleneintrag zu modifizieren oder zu löschen.
static short ALREADY_KNOWN
          Die Stelle ist schon bekannt.
static short INVALID_RELAY
          Die Ersatzstelle ist nicht permanent.
static short INVALID_TYPE
          Die Stelle ist temporär, wo sie permanent sein sollte oder umgekehrt.
static short IO_ERROR
          Es ist eine E/A-Ausnahmebedingung aufgetreten.
static java.lang.String NEWMASTERKEY
          Konstante für das Kommandozeilenargument.
static short OK
          Die Abfrage kann beantwortet werden.
static short UNKNOWN_DOMAIN
          Die Domäne ist unbekannt.
static short UNKNOWN_PLACE
          Die Stelle ist unbekannt.
 
Constructor Summary
PlaceNameServer()
          Konstruktor.
 
Method Summary
 void configure(java.io.InputStream is, java.lang.String sConfigPath)
          Konfiguriert den PlaceNameServer.
 java.util.Vector getDomainList(boolean bDirect)
          Liefert die Liste der verwalteten Domänen.
static java.lang.String getMasterKeyHash(java.lang.String sPlaintext)
          Erzeugt einen neuen Masterkey-Hashcode.
 java.util.Vector getPlaceList(java.lang.String sDomain)
          Liefert die Liste der Stellen einer gegebenen Domäne.
static void main(java.lang.String[] args)
          Startmethode.
 void processRequests()
          Threadmethode des PlaceNameServer.
 void startServer()
          Startet den Server.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

OK

public static final short OK
Die Abfrage kann beantwortet werden.

See Also:
Constant Field Values

UNKNOWN_DOMAIN

public static final short UNKNOWN_DOMAIN
Die Domäne ist unbekannt.

See Also:
Constant Field Values

UNKNOWN_PLACE

public static final short UNKNOWN_PLACE
Die Stelle ist unbekannt.

See Also:
Constant Field Values

INVALID_TYPE

public static final short INVALID_TYPE
Die Stelle ist temporär, wo sie permanent sein sollte oder umgekehrt.

See Also:
Constant Field Values

ACCESS_DENIED

public static final short ACCESS_DENIED
Keine Berechtigung, diesen Stelleneintrag zu modifizieren oder zu löschen.

See Also:
Constant Field Values

INVALID_RELAY

public static final short INVALID_RELAY
Die Ersatzstelle ist nicht permanent.

See Also:
Constant Field Values

ALREADY_KNOWN

public static final short ALREADY_KNOWN
Die Stelle ist schon bekannt.

See Also:
Constant Field Values

IO_ERROR

public static final short IO_ERROR
Es ist eine E/A-Ausnahmebedingung aufgetreten.

See Also:
Constant Field Values

NEWMASTERKEY

public static final java.lang.String NEWMASTERKEY
Konstante für das Kommandozeilenargument.

See Also:
Constant Field Values
Constructor Detail

PlaceNameServer

public PlaceNameServer()
Konstruktor.

Method Detail

getMasterKeyHash

public static java.lang.String getMasterKeyHash(java.lang.String sPlaintext)
Erzeugt einen neuen Masterkey-Hashcode.

Parameters:
sPlaintext - Schlüssel in Klartext.
Returns:
Hashwert, der in die Konfigdatei einzutragen ist.

configure

public void configure(java.io.InputStream is,
                      java.lang.String sConfigPath)
               throws PNSFormatException
Konfiguriert den PlaceNameServer.

Parameters:
is - Eingabestrom, vom dem die Konfigdatei gelesen wird.
sConfigPath - Verzeichnis, in dem die PNS-Dateien stehen
Throws:
PNSFormatException - falls die Konfiguration fehlerhaft ist.

startServer

public void startServer()
Startet den Server.


getPlaceList

public java.util.Vector getPlaceList(java.lang.String sDomain)
Liefert die Liste der Stellen einer gegebenen Domäne.

Parameters:
sDomain - Domäne.
Returns:
Liste aller Stellen der Domäne oder null, wenn die Domäne unbekannt ist.

getDomainList

public java.util.Vector getDomainList(boolean bDirect)
Liefert die Liste der verwalteten Domänen.

Parameters:
bDirect - wenn true, werden nur die Einträge der "domain"-Zeilen gewählt, sonst nur jene der "server"-Zeilen.
Returns:
Liste der verwalteten Domänen.

main

public static void main(java.lang.String[] args)
Startmethode. Der PNS wird als eigenständige Applikation gestartet. Es wird die Konfigurationsdatei eingelesen. Wird als Dateiname "-newMasterKey" angegeben, dann wird ein Kennwort verlangt, dessen Hashwert ausgegeben wird. Dieser Wert ist dann in die Konfigurationsdatei dieses PlaceNameServers einzutragen. Das eingegebene Kennwort kann später verwendet werden, um mittels PNSAdmin einen temporären Eintrag zu löschen.

Parameters:
args - Kommandozeile. Es ist der Dateiname oder "-newMasterKey" anzugeben.

processRequests

public void processRequests()
Threadmethode des PlaceNameServer. Nachfrager bekommen hier eine Verbindung und ein eigenständiges Objekt zugewiesen, mit dem sie die Stellennamensauflösung durchführen können.