BeanShell von java nach script und zurück

VBKenner

Mitglied
Hi!

Ich würde gerne gerne an verschiedenen Stellen in meinem Programm Code ausführen lassen, der vom user geändert oder hinzugefügt werden kann.

Hab's mit ungefähr so gedacht, es existiert eine Datei text.txt im Programmverzeichnis, so sähe die z.B. aus:
Code:
public void on_Start() {

}

public int on_Error() {
    
}

Die Methoden werden dann beim jeweiligen Ereignis ausgeführt. Hab ich auch hinbekommen, ich kann den Methoden auch int und String Werte übergeben aber wie übergebe ich das eine Objektreferenz, sodass ich im Script auf alle Variablen und Methoden des übergebenen Objekt lesen und schreiben kann? Mit eval(String str); kann ich ja nur nen String übergeben.

Vom richtigen Java Code rufe ich diese Methoden auf, die sich in der txt befinden! Es sollte sein, dass man den Aufruf von der Methode im Java Code durch den Inhalt der Methode ersetzen könnte.
 
Hallo!

Also Anwendungen von Usern Scripten zu lassen ist so ne Sache...
Ich würde mir an deiner Stelle ersteinmal Gedanken darüber machen wie du deine Anwendungen von den user Schützen kannst (Stichwort SecurityManager) um beispielsweise zu verhindern, dass ein User mal kurz System.exit(0) aufruft...
Weiterhin nennt man das bereitstellen von solchen Interaktionspunkten ("Hooks") auch als anbieten von "User exits". Warum lässt du die Anwender nicht gleich "richtigen" Java Code definieren, der an diesen Erweiterungspunkten angeflanscht werden kann?
Zum Scripten bieten sich neben der BeanShell auch noch Groovy und Jython an... bei diesen Zwei Exemplaren kann man auch noch Einstellen, welche Klassen verfügbar sind und welche nicht ;-)

Gruß Tom
 
Mir ist es egal was der User in die Methoded hineinschreibt.
Warum lässt du die Anwender nicht gleich "richtigen" Java Code definieren, der an diesen Erweiterungspunkten angeflanscht werden kann?
In wiefern unterscheidet sich das von meinem Vorhaben?
 
Zurück