转载自:
http://www.opencrx.org/opencrx/1.7/JBoss-4/html/c382.htm
This section (provided by Seah Hong Yee) is devoted to the automatic start up of jboss services during the startup phase of a server. It also simplifies manual jboss startup with the use a of System V init script. The following configuration has been tested on Mandrake Linux 10.1 and SuSe Linux Enterprise Server 9. Based on the particular distribution at hand there might be some minor differences in init scripts and configuration, but the following guide should work with RHEL, CentOS, WhiteBox and Fedora.
In the directory $JBOSS_HOME/bin there should be two init scripts:
* jboss_init_redhat.sh
* jboss_init_suse.sh
If you are using Mandrake/Mandriva, RHEL, CentOS, WhiteBox or Fedora:
1) Copy the jboss_init_redhat.sh script into /etc/init.d and rename it to jboss.
2) Edit the script and adapt the following parameters: JBOSS_HOME and JAVAPATH
3) Although not strictly necessary, you might want to include an entry like:
Example 7-1. Declare location of jdk
export PATH=/usr/java/jdk1.5.0_18/bin
(/usr/java/jdk1.5.0_18/ being your jdk path, adapt it to your environment)
引用
#define where jboss is - this is the directory containing directories log, bin, conf etc
JBOSS_HOME=${JBOSS_HOME:-"/apps/jboss-4.2.2.GA"}
#define the user under which jboss will run, or use 'RUNASIS' to run as the current user
JBOSS_USER=${JBOSS_USER:-"devadmin"}
#make sure java is in your path
export PATH=$PATH:/apps/jdk1.5.0_18/bin
JAVAPTH=${JAVAPTH:-"/apps/jdk1.5.0_18/bin"}
4) At the top of the script there's an entry that resembles the following one:
Example 7-2. Declare startup sequence
引用
# chkconfig: 3 97 20
The second set of digits represents the order sequence of the service startup. Make sure the number is larger than your database startup. Typically postgresql starts with the sequence number of 85, so I have my jboss startup with the sequence of 87
引用
Type the commands
Example 7-3. Add jboss to config
# chkconfig --add jboss
# chkconfig jboss on
# chkconfig --list
From now on jboss should startup automatically after reboot, or you can do it manually with service jboss restart.
For Suse Linux, please do the following:
1) Copy the jboss_init_suse.sh script into /etc/init.d and rename it to jboss.
2) Edit the script and change the following parameters: JBOSS_HOME and JAVAPTH
3) Although not strictly necessary, you might want to include an entry near the top of the script:
Example 7-4. Declare location of jdk
export PATH=/usr/java/jdk1.5.0_18/bin
(/usr/java/jdk1.5.0_18/ being your jdk path, adapt it to your environment)
4) Type the command "inserv jboss"
5) Go into directory /usr/sbin and create a symbolic link with "ln -s /etc/init.d/jboss rcjboss"
6) Execute the command "chkconfig jboss on"
You should be able to start jboss with the command "rcjboss start"
For example
#!/bin/sh
# chkconfig: 3 97 20
# description: JBoss App Server
# processname: jboss
# $Id: jboss_init_redhat.sh 60992 2007-02-28 11:33:27Z [email protected] $
#
# JBoss Control Script
#
# To use this script run it as root - it will switch to the specified user
#
# Here is a little (and extremely primitive) startup/shutdown script
# for RedHat systems. It assumes that JBoss lives in /usr/local/jboss,
# it's run by user 'jboss' and JDK binaries are in /usr/local/jdk/bin.
# All this can be changed in the script itself.
#
# Either modify this script for your requirements or just ensure that
# the following variables are set correctly before calling the script.
#define where jboss is - this is the directory containing directories log, bin, conf etc
JBOSS_HOME=${JBOSS_HOME:-"/apps/jboss-4.2.2.GA"}
#define the user under which jboss will run, or use 'RUNASIS' to run as the current user
JBOSS_USER=${JBOSS_USER:-"devadmin"}
#make sure java is in your path
export PATH=$PATH:/apps/jdk1.5.0_18/bin
JAVAPTH=${JAVAPTH:-"/apps/jdk1.5.0_18/bin"}
#configuration to use, usually one of 'minimal', 'default', 'all'
JBOSS_CONF=${JBOSS_CONF:-"default"}
#if JBOSS_HOST specified, use -b to bind jboss services to that address
JBOSS_BIND_ADDR=${JBOSS_HOST:+"-b $JBOSS_HOST"}
#define the classpath for the shutdown class
JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.jar:$JBOSS_HOME/client/jnet.jar"}
#define the script to use to start jboss
JBOSSSH=${JBOSSSH:-"$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF $JBOSS_BIND_ADDR"}
if [ "$JBOSS_USER" = "RUNASIS" ]; then
#if [ "$JBOSS_USER" = "devadmin" ]; then
SUBIT=""
else
SUBIT="su - $JBOSS_USER -c "
fi
if [ -n "$JBOSS_CONSOLE" -a ! -d "$JBOSS_CONSOLE" ]; then
# ensure the file exists
touch $JBOSS_CONSOLE
if [ ! -z "$SUBIT" ]; then
chown $JBOSS_USER $JBOSS_CONSOLE
fi
fi
if [ -n "$JBOSS_CONSOLE" -a ! -f "$JBOSS_CONSOLE" ]; then
echo "WARNING: location for saving console log invalid: $JBOSS_CONSOLE"
echo "WARNING: ignoring it and using /apps/jboss-4.2.2.GA/server/default/log/applogs"
#JBOSS_CONSOLE="/dev/null"
JBOSS_CONSOLE="/apps/jboss-4.2.2.GA/server/default/log/applogs"
fi
#define what will be done with the console log
#JBOSS_CONSOLE=${JBOSS_CONSOLE:-"/dev/null"}
JBOSS_CONSOLE=${JBOSS_CONSOLE:-"/apps/jboss-4.2.2.GA/server/default/log/applogs"}
JBOSS_CMD_START="cd $JBOSS_HOME/bin; $JBOSSSH"
JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"java -classpath $JBOSSCP org.jboss.Shutdown --shutdown"}
if [ -z "`echo $PATH | grep $JAVAPTH`" ]; then
export PATH=$PATH:$JAVAPTH
fi
if [ ! -d "$JBOSS_HOME" ]; then
echo JBOSS_HOME does not exist as a valid directory : $JBOSS_HOME
exit 1
fi
echo JBOSS_CMD_START = $JBOSS_CMD_START
case "$1" in
start)
cd $JBOSS_HOME/bin
if [ -z "$SUBIT" ]; then
eval $JBOSS_CMD_START >${JBOSS_CONSOLE} 2> /apps/jboss-4.2.2.GA/server/default/log/applogs &
else
#$SUBIT "$JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &"
$SUBIT "$JBOSS_CMD_START >${JBOSS_CONSOLE} 2> /apps/jboss-4.2.2.GA/server/default/log/applogs &"
fi
;;
stop)
if [ -z "$SUBIT" ]; then
$JBOSS_CMD_STOP
else
$SUBIT "$JBOSS_CMD_STOP"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "usage: $0 (start|stop|restart|help)"
esac