【问题标题】:Potential Regression bug: Grails 2.4.0 -> 2.4.2 using PostConstruct in a Controller潜在的回归错误:Grails 2.4.0 -> 2.4.2 在控制器中使用 PostConstruct
【发布时间】:2014-08-19 05:25:22
【问题描述】:

我有一些控制器和服务使用 PostConstruct 注释从 grailsApplication 中获取值。这些在 2.4.0 及之前都可以正常工作,但是在升级到 2.4.2 之后突然我现在在启动过程中遇到错误:

消息:创建名为“com.domain.AuthenticationController”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalStateException:未找到线程绑定请求:您是指实际 Web 请求之外的请求属性,还是在原始接收线程之外处理请求?如果您实际上是在 Web 请求中操作并且仍然收到此消息,则您的代码可能在 DispatcherServlet/DispatcherPortlet 之外运行:在这种情况下,请使用 RequestContextListener 或 RequestContextFilter 来公开当前请求。

有问题的init方法:

@PostConstruct
def init() {
    tokenValidity = grailsApplication.config.user.accessToken.validity
}

如您所见,我根本没有在 init 方法中使用或引用请求对象。它似乎来自我对配置的使用。

任何帮助将不胜感激。

【问题讨论】:

    标签: grails


    【解决方案1】:

    您的应用似乎没有安装 webxml 插件。请仔细检查。

    【讨论】:

    • 你说得对,但为什么我需要 webxml 插件,为什么在没有 webxml 插件的情况下它会在 2.4.2 之前工作?
    • 我不确定这个问题,但答案是这个插件在生成的 web.xml 文件中指定了过滤器的特定顺序。仅当您的任何插件的过滤器需要位于相对于由 Grails 或其他插件添加的过滤器的特定位置时,才需要这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    相关资源
    最近更新 更多