Packages in verschiedenen Versionen in einem Client integrieren

maythefunkbewitu

Grünschnabel
Morgen zusammen,

folgende Situation:

Es wurde einen Client erstellt, welcher über eine Corba-Schnittstelle mit einem Server kommuniziert. Diese Schnittstelle wird von der Gegenseite zur Verfügung gestellt.

Der Client soll nun dahingehend erweitert werden, als das ein weiterer Server, der eine andere Version der selben Schnittstelle verwendet ebenfalls angesprochen werden soll.

Der erste Schritt meinerseits war es eine zweite Instanz des Client mit der neuen Schnittstelle zu verlinken und in einem weiteren Jar-File abzulegen. Beide Clients parallel laufen zu lassen, also als zwei unabhängige Programme, funktioniert auch problemlos.

Nun ist es aus mehreren Gründen wünschenswert eine Rückkopplung zwischen den Clients zu realisieren, um z.B. Statuswerte auszutauschen und auf eventuelle Serverausfälle zu reagieren.

Der Ansatz war eine Wrapper-Klasse zu schreiben, welche beide Instanzen konfiguriert und startet. Problematisch dabei ist die Verwendung der jeweiligen Schnittstelle. Da es sich um unterschiedliche Versionen der selben Schnittstelle handelt, ist die Package-Struktur weitestgehend identisch. Das System lässt sich mit beiden Schnittstellen kompilieren, die Ausführung ist jedoch nur für den Client möglich dessen Schnittstelle zu erst geladen wird.

Verschiedene Versuche die Packete zu linken brachten keine Abhilfe.

Die aktuellste Version hat den folgenden Aufbau.

-----------------------------------Launcher
-------------------------------///---------------\\\
------------------------Client 1-------------Client 2
----------------------------|||----------------------|||
----------------------Common 1---------Common 2

Common 1 und 2 sind zwei jar-Files gleichen Inhalts welche den eigentlichen Code enthalten. Dort ist jeweils per manifest die zu verwendende Schnittstelle verlinkt. Client 1 und Client 2 nehmen lediglich Konfigurationen für die Clients vor. Launcher erzeugt die beiden Instanzen und startet sie.

Die Frage lautet also
: Gibt es eine Möglichkeit Pakete mit identischem Aufbau, aber unterschiedlichem Inhalt aus einer Anwendung heraus anzusprechen und dabei eindeutig zu unterscheiden an welcher Stelle, welches Paket verwendet werden soll?
 
Zurück