Web项目动态部署

Web项目为什么要动态部署

因为我们测试环境与生产环境的很多配置不尽相同,比如FTP上传或下载路径等。我们通过动态部署就可以根据不同环境发布不同的配置。

动态部署如何实现

步骤一:如下图所示,spring启动时,applicationContext.xml里面的propertyConfigurer复制加载文件配置,比如这里先到/WEB-INF目录下以键值对的形式加载application.properties的内容到内存,比如此处ip.ftp.proxyFtpConfig是key,/proxy/是value。然后以同样的方式加载/WEB-INF目录下的application-env.properties,后者覆盖前者。
在这里插入图片描述
在这里插入图片描述
步骤二:配置好不同环境的元配置文件的目录,以及目标路径。这样deploy里面的application-env.properties就会覆盖到目标路径。实际运用经常是覆盖步骤一的application-env.properties文件。
在这里插入图片描述
步骤三:如下图所示,这是一个FTP的配置文件,这里的value没有写死,而是根据key(如框中的ip.ftp.proxyFtpConfig)采用占位符的方式动态获取内存中的值。
在这里插入图片描述

案例分析

最近系统上线出现一个问题:日志显示此时生产环境使用的是测试环境的配置,导致部分功能不可用。初步分析是动态部署,首先定位到application-env.properties文件,配置内容如下:
在这里插入图片描述
按照配置先找WEB-INF里面的application.properties,然后class全局搜application-env.properties,由于我们的生产环境参数是配置在deploy里面,并且其目标路径是WEB-INF,所以生产环境参数也打在WEB-INF下面,但没有放入classes,所以实际获取的还是测试环境的参数。

下图是war包架构,maven打包是这样的,web项目里面的WEB-INF下面的文件打包到war包对应的WEB-INF下面,web项目的src和resource下面的文件打包到war包的classes下面。
在这里插入图片描述
思考了下解决方案:1、修改扫描路径; 2、修改deploy目标路径。
这里采取第一种方案,将扫描路径改为WEB-INF,最终加载到了生产环境参数。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值