2012-04-02 8 views
0

Ja, wir sind uns aller Sicherheitsrisiken bewusst, die mit der Möglichkeit einhergehen, Code von Benutzern in ein Produktionssystem zu laden. Aber um dieser Frage willen sollten wir so tun, als sei das egal .Dynamic Groovy Auf Grails-Anwendung hochgeladen

In einer Grails-Anwendung, die entwickelt wird, müssen wir dem Benutzer erlauben, einen Groovy-Code hochzuladen, der von der Grails-Anwendung verwendet wird, sowie eine CLI, die unsere Kunden herunterladen und verwenden.

Ich kenne die folgenden documentation in Bezug auf die Einbettung von Groovy.

Gibt es eine bessere Alternative als das direkte Einbetten und Interpretieren? Oder ist das so ziemlich das?

+1

Alternative fragt Benutzer kompilieren und senden kompilierte Klassen/Jar, aber ich bin sicher, es ist nicht das, was Sie wollen –

+0

Ich bin nicht dagegen. Wenn ich mit diesem Ansatz fortfahren würde, wie bekomme ich das in Tomcat's Classloader? Also können die anderen Teile meiner App den Byte-Code sehen? – Gregg

+0

Ich dachte wirklich, dass Sie einen Skript-Interpreter machen. Ok, Classloading ist flexibler (Sie können einfach Java, andere jvm-Sprachen verwenden), aber ich bin mir nicht sicher, ob ich einen eigenen Classloader in Tomcat verwenden soll –

Antwort

1

Hängt davon ab, was Sie meinen, indem Sie Groovy einbetten. Das Konsolen-Plugin bietet eine ziemlich gute Möglichkeit, um laufenden Code im laufenden Betrieb mit Zugriff auf den Graals-Kontext und die Domänenklassen hinzuzufügen. http://grails.org/plugin/console. Wenn Sie sich den Code ansehen, ist es nicht schwer, Skripte einfach als Strings in Ihrer Datenbank zu speichern und den Skript-Ausführungsmechanismus des Plugins zu verwenden.