Grails 3,动态更改 contextPath(servletContext?)
Grails 3, change contextPath dynamically (servletContext?)
我在动态更改 grails 3 web 应用程序的 contextPath 时遇到问题。如果我在 groovy.gsp (server.contextPath = "/myApp") 中更改它,它会起作用,但我需要使用不同的名称来部署它:
myApp_A.war => IP:Port/myApp_A
myApp_B.war => IP:Port/myApp_B
In 可以获得目录名称(llike: "myApp_A" for myApp_A.war)并动态读取正确的属性文件(myApp_A.properties)。之后,我尝试将此实例的上下文路径动态设置为 IP:Port/myApp_A
我尝试像这样更改 bootstrap 中的 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()
= 旧路径)。
在:
class Application extends GrailsAutoConfiguration implements EnvironmentAware {
...
我可以读取我的设置并在创建 servletContext 之前注入它们。有什么想法可以在那里设置 contextPath 吗?
此致,
grailsfan
在 application.groovy 中编写您的逻辑以设置上下文路径。
你可以设置server.contextPath = "path_a".
所以
if ( myCondition == true ) {
server.contextPath = "path_a"
} else {
server.contextPath = "path_b"
}
在application.yml添加到每个环境。然后,当您为每个环境构建 WAR 时,上下文也会发生变化。
grails.serverURL: 'http://localhost:8080/myapp'
server:
port: 8080
contextPath: '/myapp'
我在动态更改 grails 3 web 应用程序的 contextPath 时遇到问题。如果我在 groovy.gsp (server.contextPath = "/myApp") 中更改它,它会起作用,但我需要使用不同的名称来部署它:
myApp_A.war => IP:Port/myApp_A
myApp_B.war => IP:Port/myApp_B
In 可以获得目录名称(llike: "myApp_A" for myApp_A.war)并动态读取正确的属性文件(myApp_A.properties)。之后,我尝试将此实例的上下文路径动态设置为 IP:Port/myApp_A
我尝试像这样更改 bootstrap 中的 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()
= 旧路径)。
在:
class Application extends GrailsAutoConfiguration implements EnvironmentAware {
...
我可以读取我的设置并在创建 servletContext 之前注入它们。有什么想法可以在那里设置 contextPath 吗?
此致, grailsfan
在 application.groovy 中编写您的逻辑以设置上下文路径。
你可以设置server.contextPath = "path_a".
所以
if ( myCondition == true ) {
server.contextPath = "path_a"
} else {
server.contextPath = "path_b"
}
在application.yml添加到每个环境。然后,当您为每个环境构建 WAR 时,上下文也会发生变化。
grails.serverURL: 'http://localhost:8080/myapp'
server:
port: 8080
contextPath: '/myapp'