转载地址: http://hi.baidu.com/chinadm123/blog/item/7c3a242ffbbd60dd7c1e7168.html
<BEA-000388> <JVM called WLS shutdown hook. The server will force shutdown now>
Redhat5.4 64位搭建weblogic924双机,双机软件是rhcs,rhcs(redhat cluster suite)是redhat自带的双机套件。
在测试weblogic双机切换功能时总要重启若干次才能切换成功,查看weblogic启动日志,发现有如下报错:
<Mar 20, 2012 10:55:10 AM EDT> <Notice> <WebLogicServer><BEA-000388> <JVM called WLS shutdown hook. The server will force shutdown now>
<Mar 20, 2012 10:55:10 AM EDT> <Alert> <WebLogicServer> <BEA-000396> <Server shutdown has been requested by <WLS Kernel>>
<Mar 20, 2012 10:55:11 AM EDT> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to FORCE_SHUTTING_DOWN>
具体为什么会出这个错,我没太弄清,反正与java的JVM有关系,但是找到了解决方案。
solutions:
在JAVA_OPTIONS变量后面加如下参数:
· -Xrs for the Sun JVM, or
· -Xnohup for the JRockit
JAVA_OPTIONS变量在哪个文件里呢?有多个文件都有的,但实际上在哪个文件里添加都是一样的,因为在weblogic的启动过程中这些文件都会用到的。
you can specify in any of the following files:
- setdomainenv.sh
- startweblogic.sh
具体上面这两个文件在哪里,与你weblogic的安装目录有关系,我的weblogic的家目录是:
/weblogic/bea/
所以我的这两个文件所在路径是:
[root@js2 bin]# cd /weblogic/bea/user_projects/domains/base_domain/bin/s
setDomainEnv.sh startPointBaseConsole.sh stopManagedWebLogic.sh
startManagedWebLogic.sh startWebLogic.sh stopWebLogic.sh
我是在setdomainenv.sh文件里加的,在此文件的后几行找到JAVA_OPTIONS,并做如下修改:
#JAVA_OPTIONS="${JAVA_OPTIONS}"
JAVA_OPTIONS="${JAVA_OPTIONS} -Xnohup"
export JAVA_OPTIONS
其实也就是只添加了-Xnohup参数。
这里需要提醒一下:
1,为什么我添加的是-Xnohup,而不是-Xrs,是因为我的weblogic使用的SDK是bea的JRockit,具体使用哪一种在配置weblogic的时候会有提示,如下:
<-------------- BEA WebLogic Configuration Wizard ----------------->
Java SDK Selection:
-------------------
1|JRockit SDK 1.5.0_22 @ /weblogic/bea/jrockit_150_22
->2|Sun SDK 1.5.0_22 @ /weblogic/bea/jdk150_22
3|Other Java SDK
Enter index number to select OR [Exit][Previous][Next]> 1
因为我选择的是1,所以这里选择的参数是-Xnohup.
其实不管是JRockit SDK 1.5.0_22还是Sun SDK 1.5.0_22都已经在安装weblogic的时候已经安装了,这里只是配置时给我一个选择SDK的机会。
2,为什么我选择1(JRockit SDK 1.5.0_22),而不是选择默认(Sun SDK 1.5.0_22),是因为这样会报下面这个错:
<Mar 21, 2012 9:30:30 AM EDT> <Error> <Socket> <BEA-000438> <Unable to load performance pack. Using Java I/O instead. Please ensure that libmuxer library is in :'/weblogic/bea/jdk150_22/jre/lib/i386/client:/weblogic/bea/jdk150_22/jre/lib/i386:/weblogic/bea/jdk150_22/jre/../lib/i386:/weblogic/bea/patch_weblogic924/profiles/default/native:/weblogic/bea/weblogic92/server/native/linux/x86_64:/weblogic/bea/weblogic92/server/native/linux/x86_64/oci920_8
下面附weblogic双机启动,关闭,监控脚本:
#cat /etc/init.d/weblogic.sh
#!/bin/bash
#
# chkconfig: 2345 02 98
# Source function library.
WLS_LOG_PATH=/var/
#Start the weblogic Server
#The following command assumes that the weglogic login will not prompt the password
start() {
echo -n "Starting Weblogic Server:"
/weblogic/bea/user_projects/domains/base_domain/bin/startWebLogic.sh >> ${WLS_LOG_PATH}/wls_start.log 2>&1 &
touch /var/lock/subsys/weblogic
echo
}
stop() {
echo -n "Shutting down Weblogic Server:"
/weblogic/bea/user_projects/domains/base_domain/bin/stopWebLogic.sh >> ${WLS_LOG_PATH}/wls_start.log 2>&1 &
rm -f /var/lock/subsys/weblogic
echo
}
restart() {
echo -n "Restart Weblogic Server"
stop
start
echo
}
case "$1" in
start)
start
;;
stop)
stop
exit 0
;;
status)
netstat -atn |grep 7001 && ps -ef|grep -v grep|grep "weblogic" | grep "java"
if [ $? = 0 ]
then
echo "weblogic is running."
else
echo "weblogic is down"
exit 0
fi
;;
restart|reload)
stop
start
;;
*)
echo "Usage: $0 {start|stop|reload|restart|status}"
exit 1
;;
esac
exit 0
-----end-----------------------------------