一、双机热备环境的搭建
两台redhat企业版服务器(以下称server-a和server-b),每台机器都部署A和B两个应用,正常情况下用户只访问server-a上A应用和server-b上B应用。如果server-a上A应用无法访问,那么server-b上的A应用需要及时给客户提供服务;如果server-b上B应用无法访问,那么server-a上B应用需要及时给客户提供服务。该案例示意图如下:
domain1的端口号为5888,用于发布应用A(行政审批),domain2的端口号为6888,用于发布应用B(电子监察)。
双机热备软件采用的是redhat cluster suit,要求对于domain1和domain2各提供一个shell脚本,包含三个函数: start(),stop(),还有status(),分别用于启动、停止域以及检查当前状态(该域是否启动)。
domain1和domain2的shell脚本雷同,以domain1的脚本为例:
#!/bin/bash
# apusic Startup script for the Apusic Application Server
#
# chkconfig: - 85 15
# description: Apusic 5.1 is a JavaEE5.0 standard Application Server Implemention
# processname: apusic
# pidfile: /var/run/apusic.pid
# apusic_home: /usr/local/apusic-5.1
# Source function library.
. /etc/rc.d/init.d/functions
prog=Apusic-5.1
pidfile=${PIDFILE-/var/run/apusic.pid}
lockfile=${LOCKFILE-/var/lock/subsys/apusic}
JAVA_HOME=/usr/java/jdk1.5.0_18
APUSIC_HOME=/kingdee/apusic-5.1
startapusic="$APUSIC_HOME/domains/domain1/bin/startapusic -p"
stopapusic="$APUSIC_HOME/domains/domain1/bin/stopapusic admin admin iiop://localhost:5888"
start() {
echo -n $"Starting $prog: "
export JAVA_HOME
cd $APUSIC_HOME
$startapusic > /dev/null 2>&1 &
#daemon $startapusic
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
export JAVA_HOME
cd $APUSIC_HOME
$stopapusic > /dev/null 2>&1 &
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
status()
{
chk_apusic=$(ps aux|grep domain1|grep -v grep|wc -l)
if [ "$chk_apusic" = "0" ]
then
echo "Checking Apusic Server: failed!"
exit 1
fi
echo "Checking Apusic Server: success!"
exit 0
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo $"Usage: $prog {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
红色部分用于判断domain1的服务进程是否存在。
二、集群环境的搭建
两台redhat企业版服务器server-c和server-d用来做apusic应用服务器集群。
在server-c上放置loadbalancer和domain1两个域,在server-d上放置domain2。其中的loadbalancer域用来做负载均衡。
三、几个应用的移植
server-a和server-b上各自部署了三个应用:
行政审批系统(A应用)
电子监察系统(B应用)
审批申报系统
其中的审批申报系统是后来加上去的,未做双机,如果需要做双机的话办法与前两个应用相似。
server-c和server-d上部署了一个cms网站(集群)。
四、移植中遇到的几个主要问题:
问题1:一些页面图片无法显示。
解决方法:观察页面源代码,原来图片链接都写死在根目录。该应用需要置于根目录下,修改后正常显示。
问题2在电子监察的管理界面中添加或者修改含有中文字符的数据,会报ORA-01461的错误。
解决方法:应用服务器所使用的oracle驱动版本和实际不符,更换后已经可以正常添加删除修改。
问题3少数报表页面显示报错:
javax.servlet.jsp.JspTagException: com/runqian/report/view/CachedReportPool
解决方法:此系润乾报表的jar库未正确加载所致,间接由于apusic应用服务器独特的classloader机制。将相关jar包转移到域共享库中即可解决问题。
问题4 部分润乾报表显示乱码:
解决方法:
在报表相关的jsp页面起始加入"<%@ page contentType="text/html; charset=GBK" %> "即可。