Tutorial: SAP ABAP RFC-Verbindungen mit dem Java Connector 3.0.7: Ein Java-Server

In Teil 1 und Teil 2 dieses Tutorials bin ich auf das Etablieren einer RFC-Verbindung aus einem Java-Programm heraus als Client und einem umgekehrten Aufruf aus dem SAP-System heraus auf eine ausführbare Datei eingegangen. Im aktuellen Teil beschäftige ich mich nun mit einem stark vereinfachten Java-Server welcher in der Lage sein wird die Verbindung zu überwachen und auf Handles bzw. Requests aus dem SAP-System zu reagieren.

Als Basis benötigen wir einen Funktionsbaustein welcher in der Lage ist, Import-Parameter anzunehmen und Export-Parameter heraus zu transportieren. Dazu muss zunächst ein remotefähiger Funktionsbaustein mit einem try-catch-Block erstellt werden welcher eine normale Exception mit Others = 1 auffängt.

In dem neu angelegten Java-Projekt werden zunächst die „Properties“ in einer Datei hinterlegt. Alternative Methoden dazu gibt es unter Sicherheitsaspekten natürlich zahlreiche, in diesem Tutorial entscheiden wir uns jedoch für den simpelsten Weg. Die Properties sind hier nur die Anmelde- und Systeminformationen.

Abgesehen von der Properties-File benötigen wir noch einen „stfcConnectionHandler“ welcher den „JCOServerFunctionHandler“ implementiert. In dieser werden alle Eigenschaften der Properties geladen um die Eigenheiten des Servers zu etablieren. Neue Eigenschaften sind hier: StatefulSession, InTransaction. Bei beiden geht es im Wesentlichen darum in welcher Transaktion bzw. wie die Kommunikation genau aussehen muss. Wir entscheiden uns in diesem Tutorial für „Stateful“ ganz einfach um die Abläufe mit dem Eventhandler etwas zu verdeutlichen.

Für den Server als solches bauen wir die Funktion „SrvStarter“. In diesem wird versucht in einem Try-Catch –Block den Server-Namen aufzulösen, andernfalls wird eine JCOException geworfen. Wenn der Name nicht aufgelöst werden kann, wird nochmals ausserhalb des Try-Catch-Blocks der stfcFunctionHandler als Objekt initiiert, dasselbe geschieht mit dem DefaultServerHandlerFactory-Objekt. Anschließend werden beide mit dem registerHandler in der Factory registriert. Der server bekommt den Handler via „server.setCallHandlerFactory(factory)“ zugewiesen. Abschließend wird mit server.start(), der eigentliche Server gestartet.

Nachdem der Server nun etabliert wurde besteht die Möglichkeit die Verbindung zu dem Server bzw. dem Client-Funktionsbaustein zu prüfen. Beispielsweise über den JCOServerStateChangedListener: Dieser kann bei einer von Ihnen implementierten Methode über die drei Parameter JCoServer, JCoServerState (einmal newState und einmal oldState), ermittelt werden.

Getagged mit: , , , , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

*