Tag: groovy

如何使用grails中的现有java类

如何从Grails应用程序中调用驻留在现有Java类中的方法? 是否有必要/建议将其包含在服务中?

在运行时从Java编译和使用Groovy类?

我有一个应用程序,我希望通过让用户在Groovy中定义类,最终实现一些接口来实现可扩展性。 关键方面是应该在运行时解释/编译它。 即我需要我的应用程序来获取.groovy并编译它。 在启动过程中这样做是可以的。 然后,当然,我的应用程序应该能够实例化该类。 我看到两个解决方案: 1)在应用程序运行时编译,将类放在类路径上的某个地方,然后加载类,假装它们始终存在。 2)一些更聪明的方法 – 调用编译器API和一些类加载魔法让我的系统类加载器看到它们。 我如何选择2)? 还有其他想法吗?

在没有Grails的普通Spring MVC中使用GSP视图

我想在一个普通的Spring MVC应用程序中使用GSP视图而不是JSP / JSTL视图。 我已经将groovy.servlet.TemplateServlet添加到web.xml,如下所示: GroovyTemplate groovy.servlet.TemplateServlet template.engine groovy.text.GStringTemplateEngine GroovyTemplate *.gsp 并设置Spring InternalResourceViewResolver来加载GPS文件。 到目前为止一切正常,但是为了将模型中的值暴露给模板,我必须做一些技巧(inheritanceTemplateServlet并将它们添加到ServletBinding中)。 现在我的下一个障碍是默认情况下JSTL在使用c:out标记时转义XML,而Grails具有编解码器的概念来自动转义GSP中使用的值。 默认情况下,上述模板方法不会转义,这需要开发人员非常小心地避免XSS漏洞。 是否有另一种(更好的)使用GSP的方法,包括在不使用Grails的普通Spring MVC应用程序中自动转义?

Groovy和grails jdk问题

我希望我能给你们更多有关正在发生的事情的信息,但我真的不知道。 我正在尝试从springsource安装grovy和grails工具套件,我无法配置它以正常工作。 我有最新的JDK,并且首选项显示它,但我仍然收到警告,但它没有构建。 我在下面张贴了一些图片,以显示正在发生的事情。

沙盒Java / Groovy / Freemarker代码 – 防止执行特定方法

我正在开发一个允许开发人员上传自定义groovy脚本和freemarker模板的系统。 我可以使用默认的Java安全基础架构在非常高的级别上提供一定级别的安全性 – 即阻止代码访问文件系统或网络,但是我需要限制对特定方法的访问。 我的计划是修改Groovy和Freemarker运行时以读取将某些方法列入白名单或列入黑名单的注释,但这会迫使我维护其代码的分叉版本,这是不可取的。 我基本上需要做的就是在从Groovy或Freemarker调用时阻止特定方法的执行。 我已经考虑过一个看看调用堆栈的黑客攻击,但这将是一个巨大的速度命中(而且非常混乱)。 有没有人有任何其他想法来实现这个?

如何在groovy中将输出重定向到stderr?

我正在寻找一种方法将groovy脚本中的输出重定向到stderr: catch(Exception e) { println “Want this to go to stderr” }

如何通过在gradle命令行上传递version属性来设置project.version?

我想用命令行传递的自定义版本构建JAR,例如: 当我执行这样的gradle构建任务时: gradle build -Pversion=1.0 应该生成myproject-1.0.jar。 我尝试将下面的行添加到build.gradle中 ,但它不起作用: version = project.hasProperty(‘version’) ? project[‘version’] : ‘10.0.0’

Grails或Play如何检测更改和热重载类?

我很好奇是否有人知道Grails或Play等框架如何检测代码中的更改并在不重新启动应用服务器的情况下自动触发重新编译? Groovy的编译器或其动态特性是否有特定的东西可以轻松实现? 对于后台,我在构建过程中有一个自定义代码生成阶段,我希望能够具有类似的编辑和刷新function。 提前感谢任何指针,即使我必须筛选代码以获得更大的图片。 编辑:我应该澄清一点,我不打算构建一个Grails插件,以便了解在servlet容器中的任何应用程序中执行此操作所需的内容。 即,我使用的是Groovy而不是Grails。 编辑2:听起来Play有一个特定的DEV模式,可以进行热重新加载: http : //www.playframework.org/documentation/1.1.1/main#lifecycle 我知道JRebel通过类加载器执行精细的类版本控制,但我假设像Grails或Play这样的Web框架没有将它带到那个级别。

我如何让Groovy和JAXB一起玩得很好

我试图让JAXB与我的一个groovy类一起工作,但是,它似乎不起作用,但java版本。 这是代码…… 以下是场景: 如果取消注释2和3,它可以正常工作。 如果取消注释1和4,我得到: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions groovy.lang.MetaClass is an interface, and JAXB can’t handle interfaces. 如果取消注释1和5,我得到: javax.xml.bind.JAXBException: class org.oclc.presentations.simplejaxb.PlayerGroovy nor any of its super class is known to this context. 有任何想法吗? Java的: import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Player { } Groovy的: import javax.xml.bind.annotation.XmlRootElement @XmlRootElement public class PlayerGroovy { } 测试: import […]

如何使用logback禁用accessExternalDTD和entityExpansionLimit警告

我正在使用groovy的logback并在解析xml时出现很多警告。 我知道JDK1.7_u45中导致此问题的错误。 Warning: org.apache.xerces.parsers.SAXParser: Property ‘http://javax.xml.XMLConstants/property/accessExternalDTD’ is not recognized. Warning: org.apache.xerces.parsers.SAXParser: Property ‘http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit’ is not recognized. 有没有办法关闭这个日志警告出现在DEBUG? 我尝试使用Filter编写filter,但没有帮助。