Dieses Kapitel behandelt folgende Themen:
Sie haben zwei Möglichkeiten, ein Diensteverzeichnis (Service Directory) zu verwenden:
Verwendung eines Service Directory in einem
Natural-Subprogramm
Normalerweise verwendet der Natural RPC zum Auffinden eines
Dienstes ein Service Directory in einem Natural-Subprogramm. Dieses Verzeichnis
ist eine initialisierte LDA-Datenstruktur im Programm NATCLTGS
,
die in der SYSRPC
Utility mit der Funktion
Service Directory
Maintenance generiert wird und jeder RPC-Client-Anwendung
zur Verfügung stehen muss.
Sie können ein Remote Directory verwenden, um einen Dienst zu finden. Ein Remote Directory Server (RDS) ermöglicht es Ihnen, Verzeichnisdefinitionen an einer Stelle zu definieren, so dass die Dienste des RDS von allen Clients in Ihrer Umgebung verwendet werden können.
In diesem Abschnitt wird beschrieben, wie Sie einen Remote Directory Server verwenden, um einen Dienst zu finden.
Der Remote Directory Server wird in Form eines Natural-Subprogramms implementiert.
Ein Beispiel für ein solches Subprogramm ist in der Library
SYSRPC
enthalten. Es heißt RDSSCDIR
und liest die
erforderlichen Verzeichnisinformationen aus einer Arbeitsdatei. Die
Schnittstelle dieses Subprogramms ist dokumentiert, so dass Sie Ihren eigenen
Remote-Verzeichnisdienst entwickeln können. Weitere Informationen finden Sie im
Abschnitt Erstellen
einer RDS-Schnittstelle.
Die RDS-Schnittstelle ist der Natural-Parameterdatenbereich (PDA)
des Natural-Subprogramms und die Verzeichnisdienstroutine ist der Codeteil des
Natural-Subprogramms. Wenn ein Remote-CALLNAT
nicht im lokalen
Service Directory des Clients gefunden wird, kontaktiert die RPC-Laufzeit den
Remote Directory Server, indem sie einen internen Remote-CALLNAT
ausführt.
Ein interner Verzeichnisspeicher (Directory Cache) minimiert den Zugriff auf das Remote Directory. Die Cache-Informationen werden durch eine Verfallszeit gesteuert, die vom Remote Directory Server festgelegt wird.
Um einen Remote Directory Server zu verwenden:
Erstellen Sie eine Directory-Datei für den Remote Directory
Service mit Hilfe der Service Directory
Maintenance-Funktion der SYSRPC
Utility. Das
Subprogramm RDSSCDIR
wird in der Library SYSRPC
bereitgestellt und liest die Verzeichnisinformationen aus einer
Natural-Arbeitsdatei (Fixed-Block, Satzlänge 80 Byte). Dies ist die
Arbeitsdatei CMWKF01
, die dem entsprechenden Dataset in der Server
Startup JCL zugewiesen ist.
Starten Sie den Remote Directory Server und fahren Sie mit den folgenden Schritten fort.
Sie haben zwei Möglichkeiten:
Geben Sie den Remote Directory Server im
Schlüsselwort-Subparameter RDS
des Profilparameters RPC
oder des
Parameter-Makros
NTRPC
an.
Oder Sie verwenden die Maintenance-Funktion der Utility
SYSRPC
, die um Remote Directory Server zu definieren (siehe
Service Directory
Maintenance in der SYSRPC Utility-Dokumentation). Die
Definition von Remote Directory Servern wird aus Kompatibilitätsgründen
weiterhin unterstützt. Sie sollten jedoch Ihren RDS im
Schlüsselwort-Subparameter RDS
des Profilparameters RPC
oder des
Parameter-Makros
NTRPC
definieren. Zu diesem Zweck werden Einträge bereitgestellt, die es ermöglichen,
den Standort des Directory Servers zu definieren. Auf diese Weise können Sie
bestehende lokale Directory-Informationen um eine oder mehrere Remote Directory
Server-Definitionen erweitern.
Nachfolgend finden Sie ein Beispiel für die Definition eines Remote
Directory Servers im Service Directory NATCLTGS
.
Service Directory | |||||
---|---|---|---|---|---|
NODE | SERVER | LIBRARY | PROGRAM | LOGON | |
1 | NODE1 |
||||
2 | SERVER1 |
||||
3 | SYSTEM |
||||
4 | TESTS1 |
||||
5 | TESTS2 |
||||
6 | RDSNODE |
||||
7 | DIRSRV1 |
||||
8 | #ACI |
||||
9 | RDSSCDIR |
In diesem Beispiel wird lokal ein Server namens SERVER1
definiert. Dieser Server kann die Dienste TESTS1
und
TESTS2
ausführen.
Zusätzlich gibt es Definitionen für den Remote Directory Server
DIRSRV1
. Ein Remote Directory Server wird in der
Library-Definition durch ein vorangestelltes Rautenzeichen (#)
gekennzeichnet.
Die Definitionen von NODE
und SERVER
werden wie in Natural RPC üblich verwendet. Die Library-Definition definiert
das Transportprotokoll (ACI), das für die Verbindung mit dem RDS verwendet
werden muss.
Der Eintrag PROGRAM
schließlich enthält den Namen des
Remote-Subprogramms, das den Remote Directory Service repräsentiert (in diesem
Fall verweist er auf das Beispiel-Subprogramm RDSSCDIR
).
Die RDS-Schnittstelle ist der Parameterdatenbereich (PDA) eines Natural-Subprogramms.
Um Ihre eigene RDS-Schnittstelle zu erstellen, können Sie den unten abgebildeten Parameterdatenbereich verwenden.
DEFINE DATA PARAMETER 1 P_UDID(B8) /* OUT 1 P_UDID_EXPIRATION(I4) /* OUT 1 P_CURSOR(I4) /* INOUT 1 P_ENTRIES(I4) /* IN 1 P_REQUEST(A16/1:250) /* IN 1 P_EXTENT (A16/1:250) /* OUT 1 P_RESULT(A32) /* OUT 1 REDEFINE P_RESULT 2 SRV_NODE(A8) 2 SRV_NODE_EXT(A8) 2 SRV_NAME(A8) 2 SRV_NAME_EXT(A8) END-DEFINE
Eine Erläuterung der Parameter finden Sie in der nachstehenden Tabelle.
Parameter | Format/Läange | Erläuterung |
---|---|---|
P_UDID
|
B8 | Eindeutige Verzeichniskennung, sollte nach Änderung der Verzeichnisinformationen erhöht werden. Der Client speichert diese Kennung in seinem Cache. Erhöht sich die Binärzahl von einer Client-Anfrage zur nächsten, führt dies dazu, dass der Client seine lokalen Cache-Informationen löscht, da sie nicht mehr mit den Remote-Directory-Informationen übereinstimmen. |
P_UDID_EXPIRATION
|
I4 | Definiert die Verfallszeit in Sekunden,
d. h. die Anzahl der Sekunden, in denen der Client seine lokalen
Cache-Informationen verwenden kann, ohne eine Verbindung zum RDS herzustellen,
um die UDID -Einstellung zu validieren. Damit können Sie
eine Zeitspanne festlegen, nach der Sie sicher sein können, dass Ihre
Verzeichnisänderungen für alle Clients aktiv sind. Wenn Sie diese Zeit auf
einen unnötig niedrigen Wert setzen, können Sie erheblichen Netzwerkverkehr zum
RDS verursachen.
|
P_CURSOR
|
I4 | Der Remote Procedure Call hat die
Möglichkeit, nach einem alternativen Server zu suchen, wenn keine Verbindung
zum vorherigen Server hergestellt werden kann (siehe Schlüsselwort-Subparameter
TRYALT
des Profilparameters RPC oder des
Parameter-Makros
NTRPC .
Dieser Parameter enthält den Wert Null für eine Suche von Beginn an und kann vom RDS geändert werden, um sich den Speicherort des Datensatzes zu merken und die Suche fortzusetzen. Der Wert wird vom Client nicht ausgewertet, er wird nur aus dem Cache eingefügt, um die Suche fortzusetzen. |
P_ENTRIES
|
I4 | Dieser Parameter enthält die Anzahl der
Service-Definitionen in P_REQUEST .
|
P_REQUEST
|
A16/1:250 | Eine Liste mit Services, für die eine
Serveradresse abgefragt werden kann. Ein Eintrag ist wie folgt aufgebaut:
Programmname (A8) |
P_EXTENT
|
A16/1:250 | Reserviert für künftige Verwendung. |
SRV_NODE
|
A8 | Enthält den Serverknoten. |
SRV_NODE_EXT
|
A8 | Enthält die Erweiterung des Serverknotens. |
SRV_NAME
|
A8 | Enthält den Servernamen. |
SRV_NAME_EXT
|
A8 | Enthält die Erweiterung des Servernamens. |
Die Remote Directory Service Routine ist der Codebereich eines
Natural-Subprogramms (die Standardversion dieses Codebereichs ist das
Subprogramm RDSSCDIR
in der Library SYSRPC
).
Um Ihre eigene RDS-Routine zu erstellen:
Ändern Sie den unten dokumentierten Pseudocode.
Set UDID and UDID_EXPIRATION values IF P_ENTRIES = 0 ESCAPE ROUTINE IF P_CURSOR != 0 position to next server entry after P_CURSOR Scan for server which may execute P_REQUEST(*) IF found SRV_NODE = found node name SRV_NODE_EXT = node extension SRV_NAME = found server name SRV_NAME_EXT = server extension P_CURSOR = position of found server ELSE P_CURSOR = 0
Dieses Programm befindet sich in der Library SYSRPC
. Es
liest die Directory-Informationen aus einer Arbeitsdatei (Fixed-Block,
Satzlänge 80 Byte).
Ihr Programm könnte die Directory-Informationen auch von anderer
Stelle lesen (z.B. aus einer Datenbank). Bei der ausgelieferten Version von
RDSSCDIR
ist dies die Arbeitsdatei CMWKF01
, die dem
entsprechenden Dataset in der Server Startup JCL zugeordnet ist.
* comment UDID definition UDID_EXPIRATION definition node definition ... node definition
(UDID) binary number
(UDID_EXPIRATION) number of seconds
(NODE) namevalue (logon-option) server definition ... server definition
(SERVER) namevalue (logon-option) library definition ... library definition
(LIBRARY) namevalue program definition ... program definition
(PROGRAM) namevalue ... namevalue
Max. 8 characters in uppercase
Die logon-option
nach
namevalue
sowie die folgenden
Definitionszeilen sind optional. Die möglichen Werte für
logon-option
finden Sie unter
Service Directory
Maintenance in der SYSRPC
Utility-Dokumentation.
(UDID) ACB8AAB4777CA000 (UDID_EXPIRATION) 3600 * this is a comment (NODE) NODE1 (SERVER) SERVER1 (LIBRARY) SYSTEM (PROGRAM) TESTS1 TESTS2 TESTS3 (SERVER) SERVER2 (logon-option) (LIBRARY) SYSTEM (PROGRAM) TESTS4 (NODE) NODE2 (logon-option) (SERVER) SERVER1 (LIBRARY) SYSTEM (PROGRAM) TESTS1 TESTS2 TESTS3 TESTS4
Im obigen Beispiel enthält das Verzeichnis:
Zwei Server SERVER1
und SERVER2
, die
auf dem Knoten NODE1
laufen.
Der Server SERVER1
darf die Programme
TESTS1
, TESTS2
und TESTS3
in der Library
SYSTEM
ausführen.
Der Server SERVER2
darf das Programm
TESTS4
in der Library SYSTEM
ausführen.
Ein Server SERVER1
auf dem Knoten
NODE2
, der die Programme TESTS1
- TESTS4
in der Library SYSTEM
ausführen darf.
Die Einrückung der Zeilen im obigen Beispiel ist nicht erforderlich. Alle Zeilen können an beliebiger Stelle (eins) beginnen. Sie können diese Datei manuell ändern oder sie mit der SYSRPC Utility-Funktion Service Directory Maintenance generieren.