Szenario:
In einem package my.client werden Objekte/Methoden in einem package my.basepack verwendet.
my.basepack gibt es in zwei Varianten a) direkt b) via RMI.
Im RMI - Fall gibt es einen RMI Server, der selbst Variante basepack (direkt) verwendet, und ein Interface remote.basepack implementiert. Ein Client package verwendet remote.basepack, um damit für my.client my.basepack (via RMI) zu implementieren.
Je nach classpath bzw. Zusammenstellung des jar files wird die eine oder die andere Variante verwendet.
Der Grund: basepack läuft nur auf Windows (mit JNI Komponenten) , client soll plattformunabhängig sein, aber wenn möglich auf den RMI overhead verzichten.
Soweit verständlich? Falls ja: Dringende Kommentare angebracht?
Nun mein Problem:
Es wäre gut, wenn zwischen beiden Varianten erst beim Start und nicht bei der Installation entschieden werden könnte, oder nach dem Start in einer my.client.Init() Methode. Das my.client package sollte aber ansonsten möglichst unverändert bleiben.
Mein Verdacht:
- unterschiedlicher Code sollte (unbedingt?) unterschiedliche package Namen haben ?
- Das my.basepack Interface sollte durch eine Weiche ("SwitchWrapper") implementiert werden, die entweder my.direct.basepack oder my.remote.basepack aufruft ...
Meine Fragen:
1) geht es auch einfacher, eleganter, als durch den "SwitchWrapper" ?
2) bin ich auf einem Holzweg, sind zwei verschiedene jar Dateien der eindeutig bessere Weg ?
3) falls 1) und 2) ja: wie kann ein client eine von mehreren Bibliotheken (mit gleichen Objekten) gezielt laden ?
4) Any other comment ?
In einem package my.client werden Objekte/Methoden in einem package my.basepack verwendet.
my.basepack gibt es in zwei Varianten a) direkt b) via RMI.
Im RMI - Fall gibt es einen RMI Server, der selbst Variante basepack (direkt) verwendet, und ein Interface remote.basepack implementiert. Ein Client package verwendet remote.basepack, um damit für my.client my.basepack (via RMI) zu implementieren.
Je nach classpath bzw. Zusammenstellung des jar files wird die eine oder die andere Variante verwendet.
Der Grund: basepack läuft nur auf Windows (mit JNI Komponenten) , client soll plattformunabhängig sein, aber wenn möglich auf den RMI overhead verzichten.
Soweit verständlich? Falls ja: Dringende Kommentare angebracht?
Nun mein Problem:
Es wäre gut, wenn zwischen beiden Varianten erst beim Start und nicht bei der Installation entschieden werden könnte, oder nach dem Start in einer my.client.Init() Methode. Das my.client package sollte aber ansonsten möglichst unverändert bleiben.
Mein Verdacht:
- unterschiedlicher Code sollte (unbedingt?) unterschiedliche package Namen haben ?
- Das my.basepack Interface sollte durch eine Weiche ("SwitchWrapper") implementiert werden, die entweder my.direct.basepack oder my.remote.basepack aufruft ...
Meine Fragen:
1) geht es auch einfacher, eleganter, als durch den "SwitchWrapper" ?
2) bin ich auf einem Holzweg, sind zwei verschiedene jar Dateien der eindeutig bessere Weg ?
3) falls 1) und 2) ja: wie kann ein client eine von mehreren Bibliotheken (mit gleichen Objekten) gezielt laden ?
4) Any other comment ?