1) 利用Ant进行远程部署
< target name = “transfer” depends = “clean” description = “application transfer” >
< scp file = “${backup.dir}”/${DSTAMP}${TSTAMP}/${portal.deploy.war.file}
todir = “${username}:${password}@${address}:/usr/local/jboss/server/default/deploy”
trust = “true”/>
<scp file = “${backup.dir}”/${DSTAMP}${TSTAMP}/${manager.deploy.war.file}
todir = “${username}:${password}@${address}:/usr/local/jboss/server/default/deploy”
trust = “true”/>
</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的文件。文件内容为:
< jboss-web >
< context-root />
</ 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