<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Rory's Blog
    Happy study,Happy work,Happy life
    posts - 22,  comments - 46,  trackbacks - 0
    我們的項(xiàng)目比較特殊,基本上每天都要發(fā)布一次。為了不影響系統(tǒng)的正常使用,我們的做法是在下班之前把打包好的war放到服務(wù)器的一個(gè)目錄下面(eg:d:\bak)。然后用windows的計(jì)劃任務(wù)在晚上12點(diǎn)自動(dòng)部署系統(tǒng),也就是net stop tomcat,刪除xx.war,刪除xx,然后把d:\bak\xx.war拷貝到webapps下面。然后再net start tomcat。這樣在第二天來(lái)的上班的時(shí)候就可以使用升級(jí)過(guò)的系統(tǒng)了。也不會(huì)影響其他人的使用,不需要中斷操作。
    ??? 關(guān)于項(xiàng)目的一個(gè)配置我的前幾篇文章我也提到過(guò),那個(gè)upload的問(wèn)題就不會(huì)發(fā)生了。還有就是關(guān)于項(xiàng)目開(kāi)發(fā)中的一些問(wèn)題。比如數(shù)據(jù)庫(kù)的連接地址,upload directory的配置等,這些在團(tuán)隊(duì)中的每個(gè)人都是不一樣的,那么在發(fā)布的時(shí)候都要改成服務(wù)器上的正確配置,如果一個(gè)月部署一次這到?jīng)]有什么。但是像我們這樣每天部署就不是那么輕松了。而且如果一時(shí)不注意很容易造成配置的不正確。所以對(duì)于很多配置文件我們都有兩份。一份是用戶自己開(kāi)發(fā)用的,一份是部署到服務(wù)器的配置,這樣在開(kāi)發(fā)的時(shí)候團(tuán)隊(duì)中的每個(gè)人都不一樣,關(guān)于服務(wù)器的配置都是一樣的,在發(fā)布的時(shí)候是用的服務(wù)器的配置而不是用開(kāi)發(fā)用的配置。eg:web.xml(個(gè)人的配置)web-dest.xml 而關(guān)鍵的配置也就是下面這段。
    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
    ????<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這個(gè)主要是定時(shí)執(zhí)行的一些任務(wù),一般在開(kāi)發(fā)的時(shí)候都不需要,去掉也可以提升速度,也不會(huì)出現(xiàn)那么多的log。還有就是發(fā)布的web.xml用了global-dest.xml這個(gè)是關(guān)于spring的總的配置。
    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
    ????<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>
    還有關(guān)于一些properties文件我們采用了用ant部署的時(shí)候改名字來(lái)達(dá)到目的。
    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"?/>

    這個(gè)是在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"?/>
    這樣就達(dá)到了我們無(wú)憂的目的了。只要每天部署的時(shí)候保證程序能正常運(yùn)行,ant war一下就安心部署吧。
    以上就是全部?jī)?nèi)容,如果有什么不正確歡迎砸板磚。
    posted on 2006-04-28 22:27 莫多 閱讀(2688) 評(píng)論(3)  編輯  收藏 所屬分類: Other

    FeedBack:
    # re: 用ant進(jìn)行項(xiàng)目無(wú)憂部署
    2006-04-29 11:39 | ttt
    也太笨了吧.tomcat本身有undeloy,deploy ,reload ant task的.  回復(fù)  更多評(píng)論
      
    # re: 用ant進(jìn)行項(xiàng)目無(wú)憂部署
    2006-04-29 11:59 | 莫多
    哦是么?沒(méi)有用過(guò)。原意賜教。  回復(fù)  更多評(píng)論
      
    # re: 用ant進(jìn)行項(xiàng)目無(wú)憂部署
    2006-05-13 17:10 | zouyan1218
    這樣做的好處是不依賴任何服務(wù)器。不需要在客戶的服務(wù)器上安裝任何東西,直接把war拷貝到任何目錄下,然后再命令提示符下面敲入build啟動(dòng)應(yīng)用服務(wù)的命令就ok了,做到呢,“一次war,隨處應(yīng)用”。  回復(fù)  更多評(píng)論
      

    <2006年4月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    常用鏈接

    留言簿(1)

    隨筆分類(27)

    隨筆檔案(22)

    Friends

    搜索

    •  

    積分與排名

    • 積分 - 62220
    • 排名 - 845

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 久久精品国产亚洲AV久| 午夜国产精品免费观看| 亚洲精品中文字幕| 亚洲天堂男人天堂| 亚洲七七久久精品中文国产| 永久中文字幕免费视频网站| 在线观看永久免费| 成全在线观看免费观看大全| 日韩在线观看免费完整版视频| 67194在线午夜亚洲| 精品亚洲国产成AV人片传媒| 亚洲熟妇无码AV在线播放| 免费大黄网站在线观看| 四虎www成人影院免费观看| 99热在线精品免费全部my| 日韩中文字幕免费视频| 国产啪精品视频网站免费尤物| xvideos永久免费入口| 色多多A级毛片免费看| 美女尿口扒开图片免费 | 国产在线精品一区免费香蕉| 爱情岛论坛亚洲品质自拍视频网站 | 亚洲老妈激情一区二区三区| 亚洲欧洲自拍拍偷精品 美利坚 | 亚洲国产成人精品无码区二本 | 大地资源二在线观看免费高清| 青青草a免费线观a| 99久久99久久精品免费看蜜桃 | 亚洲精品成人av在线| 亚洲AV午夜成人片| 久久精品国产亚洲一区二区| 亚洲国产精品无码专区在线观看| 丁香五月亚洲综合深深爱| 狠狠亚洲婷婷综合色香五月排名| 亚洲精品成人a在线观看| 亚洲精品国产va在线观看蜜芽| 亚洲日韩在线观看| 亚洲最大AV网站在线观看| 亚洲国产综合无码一区| 丝袜熟女国偷自产中文字幕亚洲| 亚洲国产精品无码久久一区二区|