1) 利用Ant進行遠端部署
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
< target name = “transfer” depends = “clean” description = “application transfer” >
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
< scp file = “${backup.dir}”/${DSTAMP}${TSTAMP}/${portal.deploy.war.file}
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
todir = “${username}:${password}@${address}:/usr/local/jboss/server/default/deploy”
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
trust = “true”/>
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
<scp file = “${backup.dir}”/${DSTAMP}${TSTAMP}/${manager.deploy.war.file}
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
todir = “${username}:${password}@${address}:/usr/local/jboss/server/default/deploy”
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
trust = “true”/>
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
</target >
trust=”true” 要附加上,否則會傳輸失敗
2) 事務問題
項目需求的步驟
a) 應用端輸入資料,根據資料生成XML表達的層次資料,傳輸給Servlet處理
b) 解析生成的XML
c) database中的表中清除目前資料
d) 解析XML的結構,插入一個Node到database的表
若在d)步驟産生exception,這時由于c)步驟已經将資料全部清空,可能造成錯誤。是以要設定connection的自動送出事務為false 【connection.setAutoCommit(false)】。一旦在某步驟中産生異常,在異常處理的時候復原資料【connection.rollback()】
try ... ... {
connection.setAutoCommit(false);
//cmsPersistencer.cleanTableData(connection);
...
//cmsPersistencer.insertByXML(xmlString);
connection.commit();
} catch (Exception exception)... ... {
try......{
connection.rollback();
}catch(SQLException sqlException)......{
throw new Exception(sqlException);
}
throw exception;
}
3) CSV問題
需求文檔常常需要以Word的形式來表達,而某些資料在word文檔中又以表格存在。為了友善程式處理,可以将Word中的表格複制到Excel中,然後另存為CSV檔案。這時再根據CSV的結構特點,完成一個由CSV到XML轉化的工具函數。這樣我們就可以友善的處理需求的變化,而無需進行大量的改動。
我們的項目中的轉換過程:
Word ---> Excel ---> CSV ---> XML--->js
4) JBoss應用部署問題
将一個應用部署為伺服器上的根時,有2種方法
a) 将應用複制到/jboss/server/default/deploy下,在應用的/WEB-INF目錄下添加一個名為jboss-web.xml的檔案。檔案内容為:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
< jboss-web >
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
< context-root />
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUmbv50LcNncvRXYjlGZul0ZulmbpxGd190LcdmbpRHanlGbodWaohXY05Wez9CX0Vmbu4GZzNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.gif)
</ jboss-web >
b) 将應用複制到/jboss/server/default/deploy/jboss-web.deployer/下,把原來的Root.war目錄改名,并将自己的應用改為ROOT.war即可。
可能的問題如下:
a)使得應用對伺服器部署不通用或存在備援的檔案
b)設定<load-on-startup>1</ load-on-startup >的servlet若啟用資料池進行資料庫連接配接,這時資料庫連接配接池沒有準備好,是以會産生伺服器啟動失敗。
5) 需求變更和資料初始化問題
項目應用開發過程中常常遇到比較麻煩的問題是需求的變更。而比這更麻煩的是在進行需求變更開發的過程中,客戶要求在現有的基礎上調整現有的資料。是以在開發過程中基線應至少保留以下内容:
a) DB的SQL或模組化工具生成的DB設計檔案
b) 開發源代碼或工作區
c) 初始化資料
d) 初始化資料的腳本
e) 編譯打包好的應用
說明文檔,包括時間、環境說明(例如,目前的檔案編碼格式等)、測試結果(或存在的BUG)
6) 項目初始化問題
項目在部署的過程中,常常需要對資料庫的必要資料進行初始化。有如下幾種方法進行資料初始化:
a) 使用應用程式進行初始化
通過Java進行JDBC連接配接插入資料
b) 使用SQL腳本進行初始化
通過執行insert語句插入資料
c) 使用備份資料進行初始化
通過進行資料庫備份和恢複進行資料初始化,例如pg_dump
d) 使用資料庫用戶端工具
通過資料庫用戶端工具進行資料備份,然後在備份回存,例如pgAdmin