如何在Open Liberty中使用springBootApplication标签通过虚拟主机隔离请求
解决Spring Boot应用在Liberty中配置虚拟主机的问题
解决方案1:直接通过springBootApplication标签关联虚拟主机
无需嵌套web-bnd,直接利用标签原生的virtualHost属性绑定,配置如下:
<springBootApplication id="App-app" location="App-0.0.1-SNAPSHOT.jar" virtualHost="mysitevirtualhost"> <applicationArgument>--server.servlet.context-path=/App/</applicationArgument> </springBootApplication>
这种方式最简洁,直接跳过模块名匹配的问题,让虚拟主机规则直接应用到当前Spring Boot应用。
解决方案2:使用web-bnd正确匹配模块名
如果必须使用web-bnd配置,需要遵循Liberty对Spring Boot应用的模块名规则:
- 默认模块名为
springBootModule - 也可以通过
moduleName属性自定义模块名
配置示例(使用默认模块名)
<springBootApplication id="App-app" location="App-0.0.1-SNAPSHOT.jar"> <applicationArgument>--server.servlet.context-path=/App/</applicationArgument> <web-bnd moduleName="springBootModule"> <virtual-host name="mysitevirtualhost" /> </web-bnd> </springBootApplication>
配置示例(自定义模块名)
<springBootApplication id="App-app" location="App-0.0.1-SNAPSHOT.jar" moduleName="App-develop-SNAPSHOT"> <applicationArgument>--server.servlet.context-path=/App/</applicationArgument> <web-bnd moduleName="App-develop-SNAPSHOT"> <virtual-host name="mysitevirtualhost" /> </web-bnd> </springBootApplication>
失败原因说明
你之前使用通用application标签时,Liberty对Spring Boot jar的模块名解析逻辑与EAR应用不同,日志中出现的0-0是异常解析的结果,并非有效模块名,因此无法匹配web-bnd配置。而使用springBootApplication标签时,Liberty有明确的模块名规则,要么用默认值,要么主动指定,就能完成正确绑定。
内容的提问来源于stack exchange,提问作者Noe Rodriguez
相关产品推荐
相关产品推荐

