Projektstudium SS98 - distributed computing


Der Tie Mechanismus

In diesem Abschnitt soll gezeigt werden wie anstelle von Vererbung der Tie Mechanismus eingesetzt werden kann. Der Tie Mechanismus stellt eine Alternative zur Vererbung dar und wird eingesetzt, wenn es unangebracht oder unmöglich ist, daß die Objekt Implementation von der durch den IDL Compiler generierten Skeleton Klasse erbt.

 

Überblick über den Tie Mechanismus

Der Tie Mechanismus stellt eine Alternative zur Implementierung der Implementationsklasse über das Erben von der generierten Skeleton Klasse dar. Da Java keine Mehrfachvererbung unterstützt und der Entwickler möglicher Weise von einer anderen als der Skeleton Klasse erben möchte, kann es notwendig werden, den Tie Mechanismus zu verwenden.

Der Tie Mechanismus bietet eine sogenannte Delegator Implementation Klasse an, die von org.omg.CORBA.Object erbt. Die Delegator Implementation bietet keine eigene Semantik, sondern delegiert alle Aufrufe an wirkliche Implementationsklassen, die separat implementiert werden können.

Die Operations Klasse definiert sämtliche Methoden, die von der Objekt Implementation implementiert werden müssen. Diese Klasse agiert als das sogenannte delegierte Objekt für die entsprechende _tie Klassen, wenn der Tie Mechanismus verwendet wird.

 

Das Beispiel Programm

Als Beispiel dient das Count Programm aus Eine erste JavaCORBA Anwendung. Anstelle des dort verwendeten Vererbungsmechanismuses wird der Tie Mechanismus verwendet.

 

Der idl2java Compiler

Der Aufruf des IDL Compilers wird in der Form abgewandelt, daß nun die benötigten tie Klassen generiert werden.


Prompt> idl2java count.idl -no_comments


In dem Verzeichnis Counter wurden gegenüber der Version des Programmes in Eine erste JavaCORBA Anwendung zusätzlich die Dateien _tie_Count und CountOperations angelegt.

 

Veränderungen an der Server Klasse

Listing 1 zeigt die Modifikationen an der Server Klasse. Es sollte der extra Schritt in Form der Erzeugung einer Instanz von _tie_Count beachtet werden.

 

Listing 1: CountServer


class CountServer {

static public void main(String[] args) {

try {

org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);

 

org.omg.CORBA.BOA boa = orb.BOA_init();

//Erzeugen eines CountImpl Objektes.

CountImpl countImpl = new CountImpl();

 

//Erzeugen von _tie_Count und initialisieren mit CountImpl

Counter.Count count = new Counter._tie_Count(countImpl, "My Count");

 

boa.obj_is_ready(count);

 

boa.impl_is_ready();

}

catch(org.omg.CORBA.SystemException e) {

System.err.println(e);

}

}

}


 

Veränderungen an der Implementierung von Count

Die Veränderungen an der CountImpl Klasse schließen folgendes ein:

 


class CountImpl implements Counter.CountOperations {

private int sum;

 

CountImpl() {

System.out.println("Count Object Created");

sum = 0;

}

 

public int sum() {

return sum;

}

 

public void sum(int val) {

sum = val;

}

 

public int increment() {

sum++;

return sum;

}

}


 

Die Quellen:

Count.idl

_CountImplBase.java

_example_Count.java

_sk_Count.java

_st_Count.java

_tie_Count.java

Count.java

CountHelper.java

CountHolder.java

CountOperations.java

CountClient.java

CountImpl.java

CountServer.java

 

nächste Seite 


© Copyright 1998 André Möller, Oliver Mentz & Magnus Wiencke