next up previous contents
Next: Implementierungsansätze für die Agentenobjekte Up: Implementierung der CORBA-Objekte für Previous: Überblick über VisiBroker for

Übersetzung der IDL-Dateien in Java-Code

  Aus den IDL-Beschreibungen der Managementobjektklassen entstehen bei der Implementierung CORBA-Server-Objekte, die den Agenten bilden. Der IDL-Compiler idl2java übersetzt die IDL-Objektbeschreibungen. Seit Version 3.0 des VisiBroker for Java ist die Abbildung von IDL auf Java konform mit dem von der OMG verabschiedeten language mapping. Bei der Übersetzung erzeugt der IDL-Compiler Client Stubs und Server Skeletons in Form von Java-Dateien. Die Skeletons ermöglichen die Kommunikation der Server-Objekte mit dem ORB. Hierzu werden sie zusammen mit dem Code, der die Managementinformation und Funktionalität eines Objekts realisiert, mit dem Java-Compiler javac übersetzt. Es entsteht ein Agentenobjekt, welches beim Implementation Repository des ORB registriert werden kann. Die Stubs ermöglichen es einem Client, über den ORB auf ein Agentenobjekt zuzugreifen. In unserem Fall ist der Client das Management-Applet (siehe Abschnitt 6.4). Das lauffähige Applet entsteht durch Übersetzen des Applet-Codes und der Stubs durch den Java-Compiler. Abbildung 6.6 verdeutlicht die weitere Implementierung. Die schattierten Komponenten werden automatisch generiert.


 
Abbildung 6.6:  Implementierung der CORBA-Objekte
52#52

Der VisiBroker-IDL-Compiler und -ORB sind reine Java-Programme. Für die Implementierung wurde das Java Development Kit für AIX von IBM in der Version 1.1.3 eingesetzt.

Bei idl2java handelt es sich um ein Shellskript, welches die Java-VM mit der Compiler-Klasse aufruft. Zur Übersetzung einer IDL-Datei genügt im Normalfall das Kommando idl2java <dateiname>. Die IDL-Datei muß die Endung .idl besitzen. Optionale Parameter zu idl2java sind in [Vis97c] erläutert. Am Beispiel der Klase nucleus werden die von idl2java erzeugten Java-Dateien erklärt:

nucleus.java:
Dies ist die Java-Interface-Deklaration zum IDL-Interface der Klasse nucleus. Das Java-Interface enthält für jedes Attribut der Klasse eine Methode zum Auslesen und zum Schreiben, falls das Attribut nicht als read only gekennzeichnet war. Für das schreibbare Attribut Name werden also folgende Methoden erzeugt:
public java.lang.String Name();
public void Name(java.lang.String Name);
Zusätzlich enthält das Interface Deklarationen für jede Methode der IDL-Klassenbeschreibung.
nucleusHelper.java:
Diese Klasse definiert Hilfsfunktionen wie narrow(), bind() oder id(), die auf den zugehörigen CORBA-Objektinstanzen arbeiten.
nucleusHolder.java:
Dies ist eine Hilfsklasse, die intern zur Übergabe von Parametern an die CORBA-Objektinstanz benötigt wird.
_st_Nucleus.java:
Diese Klasse enthält den Code für den Client Stub.
_nucleusImplBase.java:
Diese Klasse ist das zugehörige Server Skeleton.
_tie_nucleus.java:
Diese Klasse wird benötigt, wenn der sog. Tie-Mechanismus zur Implementierung des Objekts eingesetzt wird.
_nucleusOperations.java:
Dieses Java-Interface wird ebenfalls für den Tie-Mechanismus benötigt.
_example_nucleus.java:
Code-Gerüst, welches als Basis der Implementierung für das Server-Objekt dienen kann.

Weiterhin werden im Unterverzeichnis nucleusPackage Hilfsklassen für Attribute erzeugt, deren IDL-Datentypen nicht auf einfache Java-Datentypen abgebildet werden können. Dies ist bei der Klasse nucleus bei den Statusattributen der Fall. Außerdem werden aus Gründen der Kompatibilität zu älteren Versionen von VisiBroker noch einige weitere Java-Klassen generiert, die hier nicht weiter beschrieben werden. Mit Ausnahme der Datei _example_nucleus.java muß keine der automatisch generierten Dateien für die Implementierung verändert werden.


next up previous contents
Next: Implementierungsansätze für die Agentenobjekte Up: Implementierung der CORBA-Objekte für Previous: Überblick über VisiBroker for
Copyright Munich Network Management Team