【问题标题】:Grails 2.3.2 doesn't invoke ForkedTomcatCustomizerGrails 2.3.2 不调用 ForkedTomcatCustomizer
【发布时间】:2013-11-08 22:58:40
【问题描述】:

我将 grails 应用程序从 2.2.4 升级到了 grails 2.3.2。我以前使用 _Events.groovy eventConfigureTomcat() 闭包从 apache httpd mod_jk 建立 ajp 连接。升级的时候发现这个已经不支持了,但是推荐的方法是实现 org.grails.plugins.tomcat.ForkedTomcatCustomizer customize() 方法,这样我就可以建立 ajp 连接器了。 See grails docs and search on ForkedTomcatConnector

我的问题是代码从未被调用过。

我在 /src/groovy 目录中实现了 ForkedTomcatCustomizer。代码如下:

package org.grails.plugins.tomcat

import grails.util.Environment
import org.apache.catalina.connector.Connector
import org.apache.catalina.startup.Tomcat

/**
 * Forked tomcat customizer adds ajp connect to support apache ajp in dev env
 * from within IDE
 */
class ForkedTomcatCustomizer
{
    void customize(Tomcat tomcat)
    {
        println("In the ForkedTomcatCustomizer.customize() method")
        if (Environment.getCurrent() == Environment.DEVELOPMENT)
        {
            def ajpConnector = new Connector("org.apache.coyote.ajp.AjpProtocol")
            ajpConnector.port = 8009
            ajpConnector.protocol = "AJP/1.3"
            ajpConnector.redirectPort = 8443
            ajpConnector.enableLookups = false
            ajpConnector.setProperty("redirectPort", "8443")
            ajpConnector.setProperty("protocol", "AJP/1.3")
            ajpConnector.setProperty("enableLookups", "false")
            tomcat.service.addConnector ajpConnector
            println "Added ajp connector"
        }
    }
}

有人看到/解决了这个问题吗?

【问题讨论】:

  • 您是否启用了grails.project.fork.run=true 的分叉执行?
  • 我在第一次迁移完整应用程序时尝试了“grails.project.fork.run=true”,但忘记将此属性添加到我的测试应用程序。我刚刚将该属性添加到我的测试应用程序并重新运行,它没有任何影响。

标签: grails groovy ajp


【解决方案1】:

这似乎是一个错误。

参考TomcatDevelopmentRunner下面的代码sn-p...当invokeCustomizer被调用(来自超类构造函数)时forkedClassLoader成员仍然为空。如您所见,NPE被吞下并且进程静默失败...

    private void invokeCustomizer(Tomcat tomcat) {
        Class cls = null
        try {
            cls = forkedClassLoader.loadClass("org.grails.plugins.tomcat.ForkedTomcatCustomizer")
        } catch (Throwable e) {
            // ignore
        }
        ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多