Para el fondo, estoy experimentando con la escritura de un analizador de DSL, usando este gran example. Por desgracia, cuando me adapto esta línea para su uso en mi propia aplicación:Cómo crear un objeto de GroovyShell con classpath de la aplicación de contexto
Script dslScript = new GroovyShell().parse(dsl.text)
, recibo errores de resolver las clases de tiempo de ejecución, como los archivos de mi dominio DSL tienen código que hace referencia a otras clases externas. La aplicación de contexto tiene acceso a estas clases, pero no sé cómo darles acceso al nuevo objeto de GroovyShell o, de forma alternativa, utilizar el entorno de tiempo de ejecución de la aplicación de contexto para analizar el archivo.
Sí. Acabo de llegar a una solución similar desde esto en Grails: Script dslScript = new GroovyShell (grailsApplication.classLoader) .parse (dsl.text) –
Esto soluciona los problemas con PermSpace, donde esto deja la información de la clase allí y la puede ejecutar fuera de PermSpace eventualmente? Vea aquí: http://stackoverflow.com/questions/24169976/understanding-groovy-grails-classloader-leak https://issues.apache.org/jira/browse/GROOVY-2875 Por lo tanto, me pregunto si esto se puede recomendar para aplicaciones de servidor o no, –
Ha pasado un tiempo, pero me imagino que todavía está compilando una nueva clase. Si ese es el caso, el efecto será similar a 'parseClass' – clmarquart