Tag: grails

Grails渲染插件css问题

我刚刚安装了grails渲染插件,并希望用它来生成PDF文件。 我创建了简单的模板,但它没有任何CSS样式导出。 如果我只是从grails渲染模板,那么在我的Web浏览器中会出现包含所有样式的页面。 所以,我的问题是 – 如何在PDF生成过程中正确包含CSS文件? 我的模板: Report trip ${tip} 我在我的webui.css中有样式.odd,但它不适用于该行。 任何帮助,将不胜感激。 编辑1:我发现样式被提取,如果我按以下方式执行: 但我不想硬编码应用程序名称(这也是一个基本上下文路径)。 有没有更好的方法来生成到css文件的正确链接?

从数据库或属性中获取Spring Security拦截URL

希望这是超级简单的,存在的,我正在忽略我鼻子底下的东西。 我知道我可以通过注释限制访问: @Secured({“ROLE_ADMIN”}) 或通过配置: 我更愿意从数据库中获取身份validation规则,例如: 最糟糕的情况是,必须有一种通过属性文件填充的方法吗?… /admin/**=ROLE_ADMIN /**=ROLE_USER 等等 请告诉我这存在或我的大脑会爆炸! Grails spring-security插件开箱即用,所以我知道这必须存在。 请不要让我的大脑爆炸! 编辑: 弄清楚了… 您必须提供自定义org.springframework.security.intercept.web.FilterSecurityInterceptor并提供objectDefinitionSource : CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON PATTERN_TYPE_APACHE_ANT /**login.html=IS_AUTHENTICATED_ANONYMOUSLY /user/**=ROLE_ADMIN 我想我将使用FactoryBean: public class RequestMappingFactoryBean implements FactoryBean { private final static String EOL = System.getProperty(“line.separator”); public Object getObject() throws Exception { StringBuffer sb = new StringBuffer(); sb.append(“CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON”); sb.append(EOL); sb.append(“PATTERN_TYPE_APACHE_ANT”); sb.append(EOL); sb.append(“/**login.html=IS_AUTHENTICATED_ANONYMOUSLY”); sb.append(EOL); sb.append(“/user/**=ROLE_ADMIN”); return sb.toString(); […]

如何在不重置tomcat的会话超时的情况下执行经过身份validation的AJAX请求?

我有一个正在生产的现有Grails Web应用程序,并且有30分钟的会话超时。 我们正在运行Tomcat(tcServer)。 当用户通过身份validation并在某些页面上我想要定期轮询对服务器的ajax请求,这些请求不会延长这个30分钟的会话超时 – 这样我们的会话超时就不会被阻止。 问题类似于这个未经回答的asp.net问题 ,但是在Java / Tomcat领域中没有任何答案可以做到这一点。 如何在不重置tomcat的会话超时的情况下执行经过身份validation的AJAX请求? 是否存在某种filter或URL匹配机制,我可以使用它来排除延长会话超时的请求?

在Grails应用程序中检索活动区域设置

我知道我可以使用“lang”参数自动更改文档中描述的当前语言环境,但是如何跟踪这些更改,例如更新存储在当前用户域对象中的语言? request.locale不起作用,因为它不反映通过“ ?lang=xx ”完成的更改

即使用户正在使用系统,N分钟后的绝对会话到期

我正在使用带有弹簧安全性的grails web应用程序。 即使会话处于活动状态,我也要求在固定的一组时间后强制会话到期。 我想我可以添加filter并检查每个请求的上次登录时间: if (CURRENT_TIME – LAST_LOGIN > ABSOLUTE_SESSIO EXPIRATION) then FORCE LOGOUT 但问题是,在用户发出请求之前,会话仍然在服务器上处于活动状态。 即使用户使用系统,这可能会在N分钟后立即销毁会话吗? 我正在研究tomcat会话管理以及Spring安全性如何处理它,但没有找到任何有用的信息。 有人能指出我的一些例子吗? 有没有人实现类似的东西?

Eclipse JDK设置如何影响系统的JDK设置

我试图在Mac OSX上编译引用第三方JAR的Grails应用程序。 虽然我的系统的JRE和JDK设置为Java 1.6,但我总是遇到Compilation error: java.lang.UnsupportedClassVersionError: Bad version number in .class file访问JAR中的类时Compilation error: java.lang.UnsupportedClassVersionError: Bad version number in .class file 。 此外,在测试现有Grails应用程序时,应用程序的默认统计信息显示它正在运行Java 1.6。 所以我真的没有比尝试改变Eclipse中的Java设置更多的想法 – 我认为这是愚蠢的,因为我没有使用Eclipse来开发这个应用程序 – 但是瞧 – 现在编译我的应用程序的命令线路工作得很好! 谁能解释一下Eclipse在幕后做了什么? 我之前手动设置了JAVA_HOME没有任何效果。

了解Groovy / Grails类加载器泄漏

昨天我将我的第一个Grails(2.3.6)应用程序部署到开发服务器并开始监控它。 我刚刚得到一个自动监视器,说明CPU被固定在这台机器上,所以我连接到它。 我跑了top ,发现是我的Java应用程序的PID固定服务器。 我也注意到内存是40%。 几秒钟后,CPU停止固定,降至正常水平,内存恢复到~20%范围内。 经典主要GC。 在收集的时候,我做了堆转储。 在GC之后,我在JVisualVM中打开了转储,看到大部分内存都是为org.codehaus.groovy.runtime.metaclass.MetaMethodIndex.Entry类分配的。 总共有近250,000个这样的实例,占用了大约25 MB的内存。 我用Google搜索了这个课程并看了一下它是非常有帮助的Javadocs 。 所以我仍然不知道这门课的作用。 但谷歌搜索它还带来了大约十几篇涉及这个类的相关文章(其中一些是SO问题)和Grails / Groovy应用程序的PermGen / classloader泄漏。 虽然看起来我的应用程序确实用GC清理了这些250K实例,但仍然令人不安的是它有如此多的实例,并且GC将CPU固定超过5分钟。 我的问题: 什么是这个类,Groovy用它做什么? 有人可以向我解释这个答案吗? 为什么-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled帮助解决这个特殊问题? 为什么这个课程对PermGen特别麻烦?

如何使用java驱动程序更新mongo db中的文档字段?

参考文献: http://www.mongodb.org/display/DOCS/Java+Tutorial 仍然是mongo db的新手,但我正在尝试更新集合中现有文档的一部分……遗憾的是,上面的链接没有更新示例。 基本上,我只是希望能够: 向文档添加新字段 将文档的现有字段更新为新值 这是我的代码(Grails + Groovy + Java + MongoDB + java驱动程序): def shape = mongo.shapes.findOne(new BasicDBObject(“data”, “http://www.foo.com”)); // get the document mongo.shapes.update(new BasicDBObject(“_id”, shape._id), new BasicDBObject(“isProcessed”, 0)); // add a new “isProcessed” field set to 0 mongo.shapes.update(new BasicDBObject(“_id”, shape._id), new BasicDBObject(“data”, “http://www.bar.com”)); 这几乎破坏了整个对象……我可能会尝试修改原始形状对象然后在其上运行更新。 但在那之前, 是否有人有更新单个字段(而不是整个文档)的经验? 编辑: 我只是尝试了它,并且能够通过发送整个对象以及新的和/或更新的字段来成功更新。 我想知道驱动程序是否足够智能,只更新最小的更改子集,或者只是盲目更新整个事物? (在下面的例子中,它是仅仅通过电线或整个形状文档更新foo字段?) 码: […]

在Tomcat中,java.lang.LinkageError:从引导类加载器加载JAXB 2.1 API

我正在尝试将我的webapp加载到Tomcat中。 它似乎抱怨它有一个比我的应用程序更旧版本的JAR。 我应该删除那个旧的JAR,使用更新版本的Java,编辑bootstrap类加载器(如何?)或者什么? 消息:正在从引导类加载器加载JAXB 2.1 API,但是这个RI(来自jar:file:/ C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%205.5/webapps/SkillsDB/WEB-INF/lib/ jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class)需要2.2 API。 使用endorsed目录机制将jaxb-api.jar放在bootstrap类加载器中。 (见http://java.sun.com/j2se/1.6.0/docs/guide/standards/ ) 引发者:执行控制器[FormattedDocumentController]的动作[getDocx]导致exception: java.lang.LinkageError :正在从引导类加载器加载JAXB 2.1 API,但这个RI(来自jar:file:/ C:/ Program%20Files / Apache%20Software%20Foundation / Tomcat%205.5 / webapps / SkillsDB / WEB-INF / lib / jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class)需要2.2 API。 使用endorsed目录机制将jaxb-api.jar放在bootstrap类加载器中。 (见http://java.sun.com/j2se/1.6.0/docs/guide/standards/ )

Grails / Groovy内存泄漏疑难解答?

我有一个Grails应用程序,它做了相当不错的领域对象创建和破坏,它似乎以非常非常快的速度耗尽了PermGen空间。 我做了通常的调整(碰到PermGen到256M,启用了类GC等),但没有骰子。 是否有人愿意推荐一些(并希望免费或非常低成本)工具来解决Groovy和/或Java中的这种内存消耗? 或者您用来解决JVM内存问题的一些技巧? 编辑:这是在生产模式下在Tomcat内部署应用程序的时间; 我没试过其他容器。 即便如此,拥有一些资源来追踪问题会很好。