我在动态更改grails 3 Web应用程序的contextPath时遇到问题。如果我在groovy.gsp(server.contextPath =" / myApp")中更改它,它会工作,但我需要使用不同的名称来部署它:
myApp_A.war => IP:端口/ myApp_A myApp_B.war => IP:端口/ myApp_B
In可以获取direcory名称(llike:" myApp_A" for myApp_A.war)并动态读取正确的属性文件(myApp_A.properties)。之后,我尝试动态地将此实例的上下文路径设置为IP:Port / myApp_A
我试图更改grails" server.contextPath"在引导程序中像这样: Holders.config' server.contextPath' =' / myApp_A' 但这并不完全有效。在这种情况下,我将被重定向到IP:Port / myApp_A,但后来我得到了404.Web服务仍在监听静态配置(" / myApp")。
我想我必须提前更改它(在bootstrap中为时已晚),或者直接在servletContext中更改它。更改Holders.config。' server.contextPath'对于新路径,servletContext仍然包含旧的静态路径(servletContext.getContextPath()= old path)。
在: class Application extends GrailsAutoConfiguration实现EnvironmentAware {... 我可以在创建servletContext之前读取我的设置并注入它们。我有什么想法可以在那里设置contextPath吗?
此致 grailsfan
答案 0 :(得分:0)
在application.groovy中,编写逻辑以设置上下文路径。
您可以设置server.contextPath =“path_a”。
所以
if ( myCondition == true ) {
server.contextPath = "path_a"
} else {
server.contextPath = "path_b"
}
答案 1 :(得分:0)
在application.yml中添加到每个环境。然后,当您为每个环境构建WAR时,您的上下文也会更改。
grails.serverURL: 'http://localhost:8080/myapp'
server:
port: 8080
contextPath: '/myapp'