IBM i-Programmaufruf-Java-Bean und PCML-Datei erstellen

Einschränkungen für Programmaufruf-Beans

  1. Programmaufrufdefinitionen, die ein Programm aufrufen, können maximal 35 Parameter aufweisen.
  2. Programmaufrufdefinitionen, die eine Prozedur in einem Serviceprogramm aufrufen, können maximal sieben Parameter aufweisen.
  3. Die PCML-Attribute Mindestversion und Höchstversion sind nur für Programmaufruf-Beans gültig, bei denen die Option PCML verwenden aktiviert ist.

Laufzeitunterstützungsklassen

Der Assistent für Programmaufruf generiert für jedes Projekt einmalig die folgenden Klassendateien für die Laufzeitunterstützung.
AbstractProgramCallBean

Übergeordnete Klasse für alle Programmaufruf-Beans. Sie enthält allgemeine Methoden und Merkmale aller Programmaufruf-Beans.

LogonSpec

Diese Klasse enthält die Angaben (Hostname, Benutzer-ID und Kennwort), die zum Herstellen der Verbindung mit dem fernen System verwendet werden. Wenn Ihre Anwendung auf dem fernen System ausgeführt wird, können Sie die folgenden speziellen Werte für Hostname, Benutzer-ID und Kennwort verwenden: "localhost", "*CURRENT", "*CURRENT". Zum Ausführen von Programmaufrufen wird das aktuelle Benutzerprofil verwendet.

IConnection
Hierbei handelt es sich um die Verbindungsschnittstelle, die von der Programmaufruf-Bean zum Herstellen der Verbindung mit dem fernen System verwendet wird. Jeder Programmaufruf-Bean ist ein Objekt IConnection zugeordnet. IConnection definiert die folgenden Methoden:
  1. getAS400() - diese Methode gibt ein AS400-Objekt zurück, das von der Programmaufruf-Bean verwendet wird, um für den Programmaufruf eine Verbindung zum fernen System herzustellen.
  2. releaseAS400() - diese Methode wird von der Programmaufruf-Bean verwendet, um die Verbindung nach erfolgtem Programmaufruf wieder freizugeben.
Die Programmaufruf-Bean verwendet die Methode getAS400(), um ein AS400-Objekt abzurufen, bevor sie versucht, das Programm aufzurufen. Nachdem das Programm aufgerufen wurde, wird die Verbindung mit der Methode releaseAS400() freigegeben. Der Programmaufruf läuft wie folgt ab: getAS400() -> Aufruf des fernen Programms -> releaseAS400()

Der Assistent für den Programmaufruf generiert drei Klassen, die diese Schnittstelle implementieren: AS400Connection, PooledAS400Connection, JcaAS400Connection.

AS400Connection

AS400Connection ist ein einfacher Wrapper für ein AS400-Objekt. Sie sollten diesen Verbindungstyp der Programmaufruf-Bean zuordnen, wenn Ihre Anwendung alle Verbindungen zum fernen System verwaltet.

RuntimeContext enthält sowohl alle in der Laufzeitkonfigurationsdatei definierten Informationen als auch weitere globale Informationen, die von unterschiedlichen Programmaufruf-Beans gemeinsam genutzt werden. Für jede in Ihrem Projekt definierte Konfigurationsdatei ist eine einzelne RuntimeContext-Instanz vorhanden.

Beispiel 1:

TestProgram pgm = new TestProgram(); 
AS400Connection myConnection = new AS400Connection(myAS400);
pgm.initConnection(myConnection);
PooledAS400Connection

PooledAS400Connection ist eine Verbindung, die Teil eines Verbindungspools ist. Die Methode getAS400() gibt ein AS400-Objekt aus dem Pool zurück. Die Methode versucht anhand der Angaben (Hostname, Benutzer-ID und Kennwort) im Objekt LogonSpec, ein vorhandenes AS400-Objekt im Pool zu finden. Ist ein Objekt verfügbar, wird es zurückgegeben. Andernfalls wird ein neues AS400-Objekt erstellt. Nach erfolgtem Programmaufruf wird das AS400-Objekt von der Methode releaseAS400() in den Verbindungspool zurückgestellt.

Beachten Sie, dass die Bibliotheksliste und die Anfangsbefehlinformationen im Objekt LogonSpec nicht für die Suche nach einem vorhandenen AS400-Objekt im Pool verwendet werden. Diese Informationen werden lediglich beim Erstellen einer neuen Verbindung verwendet. Die Bibliothekslisteninformationen werden für die Konfiguration der Anfangsbibliotheksliste verwendet. Desgleichen wird der Anfangsbefehl nur ein einziges Mal ausgeführt. Wenn Ihre Anwendung während der Ausführung die Bibliotheksliste bearbeitet, sollten Sie daran denken, dass alle an der Bibliotheksliste vorgenommenen Änderungen bestehen bleiben, wenn die Verbindung zu einem späteren Zeitpunkt wiederverwendet wird. Außerdem sollten Sie keine zwei Verbindungen mit demselben Hostnamen, derselben Benutzer-ID und demselben Kennwort, aber mit unterschiedlicher Bibliotheksliste und unterschiedlichen Anfangsbefehlinformationen definieren. In diesem Fall würde unter Umständen eine Verbindung mit falscher Bibliotheksliste für Ihr Programm hergestellt. Beispiel: Programm A definiert eine Verbindung, die angibt, dass Bibliothek LIBA in der Bibliotheksliste enthalten sein soll. Programm B definiert eine Verbindung mit demselben Hostnamen, derselben Benutzer-ID und demselben Kennwort, gibt jedoch an, dass Bibliothek LIBB in der Bibliotheksliste enthalten sein soll. Zur Ausführungszeit verwendet Programm B dann unter Umständen die von Programm A definierte Verbindung.

Der Verbindungspool ist eine Instanz der Klasse AS400ConnectionPool in der Toolbox. Der Verbindungspool bleibt offen, bis Ihre Anwendung beendet wird. Ihre Anwendung kann den Pool durch Verwendung der Methode getPoolInstance() explizit schließen, indem ein Handle zum Pool abgerufen wird. Mit einem Handle zum Pool können Sie auch andere Einstellungen wie beispielsweise die minimale und maximale Anzahl zulässiger Verbindungen konfigurieren.

Verbindungen werden nach Bedarf erstellt. Nach der Erstellung bleiben sie im Pool, bis der Pool geschlossen wird.

Die folgenden Beispiele zeigen die Verwendung von PooledAS400Connection.

Beispiel 1:

TestProgram pgm = new TestProgram();
LogonSpec logonInfo = new LogonSpec();
logonInfo.setHostName("mySystem");
logonInfo.setUserName("user");
logonInfo.setUserPw("password");
PooledAS400Connection pooledConn = new PooledAS400Connection(TestProgram.getRuntimeContext().getAS400ConnectionPool(), logonInfo);
initConnection(pooledConn);
JcaAS400Connection

JcaAS400Connection steht für eine ISeriesPgmCallConnection-JCA-Verbindung. Die Methode getAS400() führt anhand des angegebenen JNDI-Namens für die JCA-Verbindung eine Suche aus. Diese JCA-Verbindung muss eine Instanz von ISeriesPgmCallConnection sein. Bei dem zurückgegebenen AS400-Objekt handelt es sich um das Objekt, das sich innerhalb der ISeriesPgmCallConnection-JCA-Verbindung befindet.

Die Methode releaseAS400() schließt die JCA-Verbindung.

Um JcaAS400Connection verwenden zu können, müssen Sie ein separates Connectorprojekt konfigurieren. Weitere Informationen finden Sie in J2C-Connector für IBM i-Programmaufruf für die WebSphere-Testumgebung konfigurieren.

Beispiel 1: In diesem Beispiel wird eine JCA-Verbindung unter Verwendung der Standardanmeldedaten im JCA-Connectorprojekt erstellt.

String jndiName = "my.jca";
JcaAS400Connection jcaConn = new JcaAS400Connection(jndiName);
initConnection(jcaConn);

Beispiel 2: In diesem Beispiel wird eine Anmeldespezifikation bereitgestellt, um die Standardanmeldedaten des Connectorprojekts zu überschreiben.

String jndiName = "my.jca";
JcaAS400Connection jcaConn = new JcaAS400Connection(jndiName);
LogonSpec logonInfo = new LogonSpec();
logonInfo.setHostName("mySystem");
logonInfo.setUserName("user");
logonInfo.setUserPw("password");
initConnection(logonSpec, jndiName);
IConnectionFactory

Diese Schnittstelle stellt eine Verbindungsfactory dar. Implementieren Sie diese Schnittstelle, um angepasste Verbindungen für die Programmaufruf-Beans bereitzustellen. Gleichzeitig sollten Sie die Variable WDT_CONNECTIONFACTORY in der Laufzeitkonfigurationsdatei aktualisieren, damit sie auf Ihre Verbindungsfactoryklasse zeigt.

ConnectionFactory

Diese Klasse implementiert die Schnittstelle IConnectionFactory. Sie erstellt die folgenden Typen von IConnection abhängig von den Werten, die in der Laufzeitkonfigurationsdatei angegeben sind: JcaAS400Connection, PooledAS400Connection

Nachrichten

Von den Programmaufruf-Beans ausgegebene Nachrichten werden in dieser Klasse definiert. Es gibt eine entsprechende Datei Messages.properties, in der der Text der Nachrichten gespeichert wird.

Konstanten

Von den Programmaufruf-Beans verwendete Konstanten werden in dieser Klasse definiert.

Position für die Java-Bean und PCML-Datei angeben

Mit der zweiten Seite des Assistenten für Programmaufruf können Sie die Position angeben, an der die Java-Bean und die PCML-Datei generiert werden sollen.
  1. Klicken Sie auf Durchsuchen neben dem Feld Ordner, um einen bestehenden Ordner auszuwählen, in dem die Java-Bean und die PCML-Datei generiert werden sollen.
  2. Klicken Sie auf Durchsuchen neben dem Feld Paket, um ein bestehendes Paket auszuwählen. Wenn Sie einen Paketnamen eingeben, der nicht vorhanden ist, erstellt der Assistent für Programmaufruf das Paket. Standardauswahl ist das Paket, das Sie beim Starten des Assistenten für Programmaufruf in der Workbench ausgewählt haben.
  3. Geben Sie den Namen, den die vom Assistenten generierte PCML-Datei erhalten soll, bei PCML-Dateiname an oder wählen Sie ihn aus. Der Standardname ist der Java-Bean-Name des ersten Programms, das Sie definiert haben.
  4. Das Markierungsfeld Java-Anwendung ist standardmäßig ausgewählt.
    • Wird eine Java-Bean gewünscht, behalten Sie die Auswahl des Markierungsfelds Java-Anwendung bei. Die generierten Java-Beans können in jedem Java-Code verwendet werden. Dies schließt alle eigenständigen Java-Anwendungen oder Java-Komponenten von Webanwendungen (z. B. Servlets und JSP-Seiten) ein. Der Assistent generiert eine Java-Bean für jedes definierte Programm.
    • Wird eine Java-Bean der Web-Services gewünscht, wählen Sie das Markierungsfeld Web-Services aus. Die generierten Java-Beans können vom Web-Service-Assistenten zum Erstellen eines Web-Service verwendet werden.
    • Wenn Sie möchten, dass Programmaufrufe mit der in der Toolbox enthaltenen Klasse ProgramCallDocument ausgeführt werden, wählen Sie das Markierungsfeld PCML verwenden aus. Sie sollten diese Option auswählen, wenn beliebige Parameter oder Felder in Ihrem Programm eine Mindestversion oder eine Höchstversion definieren.
  5. Klicken Sie auf Weiter, um mit der nächsten Seite des Assistenten für Programmaufruf fortzufahren, und wählen Sie aus, ob eine Laufzeitkonfigurationsdatei generiert werden soll.

Der Assistent für Programmaufruf generiert Klassen für jedes von Ihnen definierte Programm und Klassen, die Datenstrukturen darstellen. Wenn Sie die Option zum Generieren von Web-Services ausgewählt haben, werden für jedes Programm drei zusätzliche Klassen generiert. Eine der Klassen ist eine Java-Bean, deren Name mit dem Wort Services endet. Die anderen beiden Klassen haben Namen, die mit Input oder Result enden. Diese beiden Klassen werden von der Java-Bean-Klasse für Web-Services benötigt. Soll ein Web-Service unter Verwendung des Assistenten für Web-Services erstellt werden, müssen Sie die Klasse, deren Name mit dem Wort Services endet, als Eingabe für den Assistenten für Web-Services verwenden.

Zusätzlich zu den oben erwähnten Klassen generiert der Assistent außerdem einmalig Klassendateien für die Laufzeitunterstützung für jedes Projekt. Näheres siehe Laufzeitunterstützungsklassen.

Der Assistent erstellt auch eine PCML-Datei und eine Datei .mpcml. Sie benötigen die Datei .mpcml nicht, wenn Sie Ihre Anwendung oder Services implementieren. Sie wird nur zur Entwicklungszeit in der Workbench verwendet. Außerdem wird eine Datei .config erstellt, wenn Sie mit der dritten Seite des Assistenten fortfahren und angeben, dass die Einstellungen gesichert werden sollen.

Wenn der von Ihnen angegebene Ordner zu einem Java-Projekt gehört, wird der Klassenpfad des Projekts aktualisiert, damit er die folgenden JAR-Dateien enthält. Wenn Sie Ihre Java-Anwendung implementieren, müssen Sie sicherstellen, dass diese JAR-Dateien im Anwendungsklassenpfad definiert sind. Beachten Sie, dass die JAR-Datei iseriespgmcallclient nur hinzugefügt wird, wenn Ihr Projekt J2EE-konform ist.

  • WDSC_AUSGANGSVERZEICHNIS\plugins\com.ibm.etools.iseries.toolbox_Versionsnummer\runtime\jt400.jar
  • WDSC_AUSGANGSVERZEICHNIS\plugins\com.ibm.etools.iseries.javatools_Versionsnummer\lib\confighelper.jar
  • WDSC_AUSGANGSVERZEICHNIS\plugins\com.ibm.etools.iseries.javatools_Versionsnummer\lib\iseriespgmcallclient.jar

Wenn der von Ihnen angegebene Ordner zu einem Webprojekt gehört, werden diese JAR-Dateien in den Ordner lib Ihres Webprojekts kopiert. Beachten Sie, dass die JAR-Datei iseriespgmcallclient nur hinzugefügt wird, wenn Ihr Projekt einen J2EE-konformen Server als Zielserver aufweist.


Feedback