我们的项目比较特殊,基本上每天都要发布一次。为了不影响系统的正常使用,我们的做法是在下班之前把打包好的war放到服务器的一个目录下面(eg:d: /bak)。然后用windows的计划任务在晚上12点自动部署系统,也就是net stop tomcat,删除xx.war,删除xx,然后把d:/bak/xx.war拷贝到webapps下面。然后再net start tomcat。这样在第二天来的上班的时候就可以使用升级过的系统了。也不会影响其他人的使用,不需要中断操作。
关于项目的一个配置我的前几篇文章我也提到过,那个upload的问题就不会发生了。还有就是关于项目开发中的一些问题。比如数据库的连接地址, upload directory的配置等,这些在团队中的每个人都是不一样的,那么在发布的时候都要改成服务器上的正确配置,如果一个月部署一次这到没有什么。但是像 我们这样每天部署就不是那么轻松了。而且如果一时不注意很容易造成配置的不正确。所以对于很多配置文件我们都有两份。一份是用户自己开发用的,一份是部署 到服务器的配置,这样在开发的时候团队中的每个人都不一样,关于服务器的配置都是一样的,在发布的时候是用的服务器的配置而不是用开发用的配置。eg: web.xml(个人的配置)web-dest.xml 而关键的配置也就是下面这段。
web.xml
global.xml
build.xml
这个是在war之前做的,大家眼看也就明白吧,就是把xx-dest.properties,改名成xx.propeties。在打完包之后
以上就是全部内容,如果有什么不正确欢迎砸板砖。
关于项目的一个配置我的前几篇文章我也提到过,那个upload的问题就不会发生了。还有就是关于项目开发中的一些问题。比如数据库的连接地址, upload directory的配置等,这些在团队中的每个人都是不一样的,那么在发布的时候都要改成服务器上的正确配置,如果一个月部署一次这到没有什么。但是像 我们这样每天部署就不是那么轻松了。而且如果一时不注意很容易造成配置的不正确。所以对于很多配置文件我们都有两份。一份是用户自己开发用的,一份是部署 到服务器的配置,这样在开发的时候团队中的每个人都不一样,关于服务器的配置都是一样的,在发布的时候是用的服务器的配置而不是用开发用的配置。eg: web.xml(个人的配置)web-dest.xml 而关键的配置也就是下面这段。
web.xml
<
context-param
>
< param-name > contextConfigLocation </ param-name >
< param-value >
classpath:spring/*_context.xml,
classpath:spring/global.xml
</ param-value >
</ context-param >
web-dest.xml
< param-name > contextConfigLocation </ param-name >
< param-value >
classpath:spring/*_context.xml,
classpath:spring/global.xml
</ param-value >
</ context-param >
<
context-param
>
< param-name > contextConfigLocation </ param-name >
< param-value >
classpath:spring/*_context.xml,
classpath:spring/global-dest.xml,
classpath:spring/scheduler.xml
</ param-value >
</ context-param >
注 意到其中不一样的。dest里少了scheduler.xml这个主要是定时执行的一些任务,一般在开发的时候都不需要,去掉也可以提升速度,也不会出现 那么多的log。还有就是发布的web.xml用了global-dest.xml这个是关于spring的总的配置。
< param-name > contextConfigLocation </ param-name >
< param-value >
classpath:spring/*_context.xml,
classpath:spring/global-dest.xml,
classpath:spring/scheduler.xml
</ param-value >
</ context-param >
global.xml
<
bean
id
="dataSource"
class
="org.apache.commons.dbcp.BasicDataSource"
destroy-method
="close"
>
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.240:1433/fivefortunes;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
< bean id ="dataSource2" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method ="close" >
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.240:1433/outmail;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
< bean id ="customDataSource" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method ="close" >
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.240:1433/custom;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
global-dest.xml
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.240:1433/fivefortunes;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
< bean id ="dataSource2" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method ="close" >
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.240:1433/outmail;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
< bean id ="customDataSource" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method ="close" >
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.240:1433/custom;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
<
bean
id
="dataSource"
class
="org.apache.commons.dbcp.BasicDataSource"
destroy-method
="close"
>
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.5:1433/fivefortunes;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
< bean id ="dataSource2" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method ="close" >
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.5:1433/outmail;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
< bean id ="customDataSource" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method ="close" >
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.5:1433/custom;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
还有关于一些properties文件我们采用了用ant部署的时候改名字来达到目的。
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.5:1433/fivefortunes;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
< bean id ="dataSource2" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method ="close" >
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.5:1433/outmail;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
< bean id ="customDataSource" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method ="close" >
< property name ="driverClassName" >< value > net.sourceforge.jtds.jdbc.Driver </ value ></ property >
< property name ="url" >
< value > jdbc:jtds:sqlserver://192.168.0.5:1433/custom;SelectMethod=cursor </ value >
</ property >
< property name ="username" >< value > sa </ value ></ property >
< property name ="password" >< value ></ value ></ property >
</ bean >
build.xml
<
move
file
="${dist.dir}/mail.properties"
tofile
="${dist.dir}/mail-dev.properties"
/>
< copy file ="${dist.dir}/mail-dest.properties" tofile ="${dist.dir}/mail.properties" />
< move file ="${dist.dir}/upload.properties" tofile ="${dist.dir}/upload-dev.properties" />
< copy file ="${dist.dir}/upload-dest.properties" tofile ="${dist.dir}/upload.properties" />
< copy file ="${dist.dir}/mail-dest.properties" tofile ="${dist.dir}/mail.properties" />
< move file ="${dist.dir}/upload.properties" tofile ="${dist.dir}/upload-dev.properties" />
< copy file ="${dist.dir}/upload-dest.properties" tofile ="${dist.dir}/upload.properties" />
这个是在war之前做的,大家眼看也就明白吧,就是把xx-dest.properties,改名成xx.propeties。在打完包之后
<
move
file
="${dist.dir}/mail-dev.properties"
tofile
="${dist.dir}/mail.properties"
/>
< move file ="${dist.dir}/upload-dev.properties" tofile ="${dist.dir}/upload.properties" />
这样就达到了我们无忧的目的了。只要每天部署的时候保证程序能正常运行,ant war一下就安心部署吧。
< move file ="${dist.dir}/upload-dev.properties" tofile ="${dist.dir}/upload.properties" />
以上就是全部内容,如果有什么不正确欢迎砸板砖。