2016-06-08 23 views
0

vielleicht besser gefragt mit mehr Platz ...Kann ich eine andere Version derselben Java-Bibliothek in einer RCP e4-App dynamisch laden?

Kann eine reine RCP e4-Anwendung mehrere Versionen derselben Java-Bibliothek enthalten, die dynamisch geladen und mit einem Modellobjekt verknüpft werden, das auf einem seiner Attribute basiert?

Beispiel: Die e4-Anwendung verwendet Axis zur Kommunikation mit zahlreichen Endpunkten. Jeder dieser Endpunkte kann/wird verschiedene Versionen von Axis haben. Daher muss die Anwendung über eine Konfigurationsseite verfügen, auf der der Benutzer dynamisch die Version von Axis auswählen kann. Basierend auf dieser Konfiguration wird das erforderliche Plug-In zur Verwendung dynamisch geladen.

Vielen Dank für Ihre Gedanken und Meinungen im Voraus.

+0

e4 nichts dafür nicht bietet speziell und es kann aufgrund des komplexen OSGi-Plug-in-Systems Classloader schwierig sein. Eine Diskussion darüber [hier] (https://www.eclipse.org/forums/index.php/t/206159/) –

+0

Ich bin ein Anfänger RCP-Entwickler und würde Ihre Hilfe schätzen, wenn ich den "tricky Pfad" navigiere. Wäre es möglich, dass Sie mich außerhalb dieses Forums für eine Entschädigung unterstützen? – Kurt

Antwort

0

Es ist möglich, mehrere Versionen derselben Bibliothek in eine Java-Anwendung zu laden, indem mehrere Klassenladeprogramme verwendet werden. Werfen Sie einen Blick auf URLClassLoader. Jede Version der Bibliothek könnte wie folgt geladen werden:

0

Sie könnten die verschiedenen Endpunkt-Kommunikation in verschiedenen Plugins implementieren. Da jedes Plugin über einen eigenen Classloader verfügt, kann jeder von ihnen eine eigene AXIS-Implementierung verwenden. Sie können die Versionsgrenzen in den Abhängigkeiten der plugin.xml verwenden, um die genaue verwendete Version anzugeben. Solange Sie nicht zwei verschiedene Versionen innerhalb desselben Plugins verwenden, sollte es funktionieren. Das haben wir einmal mit Apache Commons Lang erfolgreich gemacht.

[Bearbeiten] Dies wäre statisch, nicht dynamisch obwohl [/ edit]