遵循Grails 3中的符号链接

时间:2016-07-08 13:55:56

标签: grails grails-3.1

在Grails 2.x中,为了允许以下符号链接,我们可以在scripts/_Events.groovy中添加以下内容:

eventConfigureTomcat = { tomcat ->
    def ctx = tomcat.host.findChild("")
    ctx.allowLinking = true     // Follow soft links
}

我们如何在Grails 3中实现同样的目标?我已尝试在Grails 3的src/main/scripts目录中创建相同的脚本文件,但没有帮助。

修改

我还尝试在Bootstrap.groovy中添加以下行:

Holders.getServletContext().allowLinking = true

GitHub issue #10045

1 个答案:

答案 0 :(得分:1)

最后,我已经在graemerocher提供的示例的帮助下找到了在Grails 3中遵循符号链接的解决方案。

您只需将以下内容添加到./grails-app/init/<package>/Application.groovy

@Bean
EmbeddedServletContainerFactory containerFactory() {
    TomcatEmbeddedServletContainerFactory containerFactory = new TomcatEmbeddedServletContainerFactory()

    containerFactory.addContextCustomizers(new TomcatContextCustomizer() {
        @Override
        void customize(Context context) {
            StandardRoot root = new StandardRoot(context)
            root.setAllowLinking(true)
            context.setResources(root)
        }
    });

    return containerFactory
}

要导入的包:

import org.apache.catalina.Context
import org.apache.catalina.webresources.StandardRoot
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory
import org.springframework.boot.context.embedded.tomcat.TomcatContextCustomizer
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory
import org.springframework.context.annotation.Bean