Hallo,
Ich möchte gerne mich informieren und fragen, ob das überhaupt mit Java möglich ist.
Folgender hypotetischer Fall:
1. Ich habe einen ApplicationServer zB Tomcat. und eine Datenbank zB PostgreSQL / Oracle
2. Es läuft eine Applikation: Das Kernsystem.
3. An dieses Kernsystem kann ich einen Schlüssel senden. zB eine ID.
4. Das Kernsystem holt aus der DB einen Blob.
5. Der Blob ist eine kompilierte JAVA-Klasse.
6. Die JAVA-Klasse ist ein implements eines Interfaceses.
7. Das Kernsystem ruft die Klasse auf und bekommt einen Rückgabewert. zB blobClass.execute( parameter );
8. Das kernsystem wirft die Klasse wieder weg und kann den nächsten Schlüssel verarbeiten... usw.
Bis Punkt 5 kann ich das ohne Probleme... Aber 6. und 7. machen mir Probleme. Geht das überhaupt? Kann ich irgendwie eine Klasse aus dem RAM ausführen? Oder müsste ich die erst ins Filesystem legen? (Was die Sache nur langsam macht!) Oder kann ich während der Laufzeit überhaupt Klassenaustauschen? Muss ich dann eine paralellen Thread erzeugen, der aus der neuen Klasse besteht... Oder geht das anders viel einfacher...
Problem ist, ich möchte, dass das Kernsystem statisch bleibt - Ich möchte immer wieder neue Funktionen hinzufügen/auswechseln oder löschen, ohne das Kernsystem zu berühren. Sprich neu zu kompilieren.
Das hört sich alles sehr komisch an... Aber ich habe ein ähnliches System unter PHP (mit dem eval()-Befehl) nur das ist mir zu langsam und ich würde gerne in diesem Projekt auf Java umsteigen...
Danke fürs Lesen und Antworten
Gruß Clemens
Ich möchte gerne mich informieren und fragen, ob das überhaupt mit Java möglich ist.
Folgender hypotetischer Fall:
1. Ich habe einen ApplicationServer zB Tomcat. und eine Datenbank zB PostgreSQL / Oracle
2. Es läuft eine Applikation: Das Kernsystem.
3. An dieses Kernsystem kann ich einen Schlüssel senden. zB eine ID.
4. Das Kernsystem holt aus der DB einen Blob.
5. Der Blob ist eine kompilierte JAVA-Klasse.
6. Die JAVA-Klasse ist ein implements eines Interfaceses.
7. Das Kernsystem ruft die Klasse auf und bekommt einen Rückgabewert. zB blobClass.execute( parameter );
8. Das kernsystem wirft die Klasse wieder weg und kann den nächsten Schlüssel verarbeiten... usw.
Bis Punkt 5 kann ich das ohne Probleme... Aber 6. und 7. machen mir Probleme. Geht das überhaupt? Kann ich irgendwie eine Klasse aus dem RAM ausführen? Oder müsste ich die erst ins Filesystem legen? (Was die Sache nur langsam macht!) Oder kann ich während der Laufzeit überhaupt Klassenaustauschen? Muss ich dann eine paralellen Thread erzeugen, der aus der neuen Klasse besteht... Oder geht das anders viel einfacher...
Problem ist, ich möchte, dass das Kernsystem statisch bleibt - Ich möchte immer wieder neue Funktionen hinzufügen/auswechseln oder löschen, ohne das Kernsystem zu berühren. Sprich neu zu kompilieren.
Das hört sich alles sehr komisch an... Aber ich habe ein ähnliches System unter PHP (mit dem eval()-Befehl) nur das ist mir zu langsam und ich würde gerne in diesem Projekt auf Java umsteigen...
Danke fürs Lesen und Antworten
Gruß Clemens