我在动态更改grails 3 Web应用程序的contextPath时遇到问题。如果我在groovy.gsp(server.contextPath =“/ myApp”)中对其进行更改,则它可以正常工作,但是我需要使用这样的不同名称来部署它:
myApp_A.war => IP:Port/myApp_A
myApp_B.war => IP:Port/myApp_B
可以获取目录名称(llike:“myApp_A”为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”)。我认为我必须更早更改它(在引导中为时已晚),或直接在ServletContext中更改它。将
Holders.config.'server.contextPath'
更改为新路径后,servletContext仍包含旧的静态路径(servletContext.getContextPath()
=旧路径)。在:
class Application extends GrailsAutoConfiguration implements EnvironmentAware {
...
在创建ServletContext之前,我可以阅读我的设置并将其注入(inject)。有什么想法可以在其中设置contextPath吗?
问候,
格雷斯范
最佳答案
在application.groovy中,编写逻辑以设置上下文路径。
您可以设置server.contextPath =“path_a”。
所以
if ( myCondition == true ) {
server.contextPath = "path_a"
} else {
server.contextPath = "path_b"
}