Hallo zusammen
Ich habe hier eine kleine aber feine Problemstellung. Prof. Meixner meinte dazu, "Ein nicht triviales Problem".
Es geht um folgendes:
Wir haben drei Klassen A, B und C. Jede dieser Klassen besitzt Attribute mit allen erlaubten Modifiern und stellt Methoden bereit.
A hat wie auch C eine Referenz auf ein B-Objekt. (die _gleiche_ Referenz)
A hat zusätzlich eine Referenz auf ein C-Objekt.
B hat eine Referent auf ein C-Objekt.
Nun gibt es _zwei_ Prozesse P1 und P2 (zwei main-Threads, nicht zwei Threads in einer main), die beide auf die Klassen zugreifen.
P1 -> A, B
P2 -> B, C
=> B wird in beiden Prozessen per implizitem ClassLoading geladen und verwendet.
Nun zum Problem:
B wird verändert (Methode löschen, ändern, hinzufügen, usw.).
Wie ist es möglich B in die _laufenden_ Prozesse einzuschleusen? Was passiert mit den bestehenden Referenzen in A und C auf B? Müssen A und C auch neu geladen werden?
Und zuletzt wie realisiert man dieses Szenario?
Lösungsansatz:
URLClassLoader verwenden. (hab ehrlich gesagt nicht zu 100% verstanden, was er bringt)
In diesem Buch [OpenBook: Java ist auch eine Insel] wird eine ähnliche Problematik angesprochen. Sie hilft _mir_ nur leider nicht weiter.
Ich würde mich freuen, wenn ihr mir helfen könntet.
Mit freundlichen Grüßen
Jojo
Ich habe hier eine kleine aber feine Problemstellung. Prof. Meixner meinte dazu, "Ein nicht triviales Problem".
Es geht um folgendes:
Wir haben drei Klassen A, B und C. Jede dieser Klassen besitzt Attribute mit allen erlaubten Modifiern und stellt Methoden bereit.
A hat wie auch C eine Referenz auf ein B-Objekt. (die _gleiche_ Referenz)
A hat zusätzlich eine Referenz auf ein C-Objekt.
B hat eine Referent auf ein C-Objekt.
Java:
A ---> B <---> C
| ^
| |
+--------------+
P1 -> A, B
P2 -> B, C
=> B wird in beiden Prozessen per implizitem ClassLoading geladen und verwendet.
Nun zum Problem:
B wird verändert (Methode löschen, ändern, hinzufügen, usw.).
Wie ist es möglich B in die _laufenden_ Prozesse einzuschleusen? Was passiert mit den bestehenden Referenzen in A und C auf B? Müssen A und C auch neu geladen werden?
Und zuletzt wie realisiert man dieses Szenario?
Lösungsansatz:
URLClassLoader verwenden. (hab ehrlich gesagt nicht zu 100% verstanden, was er bringt)
In diesem Buch [OpenBook: Java ist auch eine Insel] wird eine ähnliche Problematik angesprochen. Sie hilft _mir_ nur leider nicht weiter.
Ich würde mich freuen, wenn ihr mir helfen könntet.
Mit freundlichen Grüßen
Jojo