在 Grails 3 中遵循符号 link
Following symbolic link in Grails 3
在 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
最后,借助 graemerocher.
提供的示例,我找到了在 Grails 3 中遵循符号 link 的解决方案
您只需将以下内容添加到您的 ./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
在 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
最后,借助 graemerocher.
提供的示例,我找到了在 Grails 3 中遵循符号 link 的解决方案您只需将以下内容添加到您的 ./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