Start JBoss 7 as a service on Linux

后端 未结 12 2007
闹比i
闹比i 2020-12-12 11:54

Previous versions of JBoss included a scripts (like jboss_init_redhat.sh) that could be copied to /etc/init.d in order to add it as a service - so it would star

12条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-12 12:25

    Just been fighting through this tonight, and thought I'd share my findings. In the end i followed the install instructions here: http://ptoconnor.wordpress.com/2012/11/19/jboss-as-7-1-1-on-an-ubuntu-12-04-aws-instance-running-oracle-java-7/ with some alterations;

    I installed to /usr/share not /opt

    To get jboss to run as a service, i created a symbolic link to the redhat/centos friendly /usr/share/jboss-as-7.1.1.Final/bin/init.d/jboss-as-standalone.sh which was provided with the 7.1.1 final release

    sudo ln -s /usr/share/jboss-as-7.1.1.Final/bin/init.d/jboss-as-standalone.sh /etc/init.d/jboss
    

    then a few changes to make it ubuntu friendly

    #!/bin/sh
    #
    # JBoss standalone control script
    #
    # chkconfig: - 80 20
    # description: JBoss AS Standalone
    # processname: standalone
    # pidfile: /var/run/jboss-as/jboss-as-standalone.pid
    # config: /etc/jboss-as/jboss-as.conf
    
    # Source function library.
    . /lib/lsb/init-functions
    
    # Load Java configuration.
    [ -r /etc/java/java.conf ] && . /etc/java/java.conf
    export JAVA_HOME
    
    # Load JBoss AS init.d configuration.
    if [ -z "$JBOSS_CONF" ]; then
      JBOSS_CONF="/etc/jboss-as/jboss-as.conf"
    fi
    
    [ -r "$JBOSS_CONF" ] && . "${JBOSS_CONF}"
    
    # Set defaults.
    
    if [ -z "$JBOSS_HOME" ]; then
      JBOSS_HOME=/usr/share/jboss-as
    fi
    export JBOSS_HOME
    
    if [ -z "$JBOSS_PIDFILE" ]; then
      JBOSS_PIDFILE=/var/run/jboss-as/jboss-as-standalone.pid
    fi
    export JBOSS_PIDFILE
    
    if [ -z "$JBOSS_CONSOLE_LOG" ]; then
      JBOSS_CONSOLE_LOG=/var/log/jboss-as/console.log
    fi
    
    if [ -z "$STARTUP_WAIT" ]; then
      STARTUP_WAIT=30
    fi
    
    if [ -z "$SHUTDOWN_WAIT" ]; then
      SHUTDOWN_WAIT=30
    fi
    
    if [ -z "$JBOSS_CONFIG" ]; then
      JBOSS_CONFIG=standalone.xml
    fi
    
    JBOSS_SCRIPT=$JBOSS_HOME/bin/standalone.sh
    
    prog='jboss-as'
    
    CMD_PREFIX=''
    
    JBOSS_USER=jboss
    
    if [ ! -z "$JBOSS_USER" ]; then
      if [ -x /lib/lsb/init-functions ]; then
        CMD_PREFIX="start-stop-daemon -user $JBOSS_USER"
      else
        CMD_PREFIX="su - $JBOSS_USER -c"
      fi
    fi
    
    start() {
      echo -n "Starting $prog: "
      if [ -f $JBOSS_PIDFILE ]; then
        read ppid < $JBOSS_PIDFILE;
        if [ `ps --pid $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then
          echo -n "$prog is already running"
          failure
          echo
          return 1 
        else
          rm -f $JBOSS_PIDFILE
        fi
      fi
      mkdir -p $(dirname $JBOSS_CONSOLE_LOG)
      cat /dev/null > $JBOSS_CONSOLE_LOG
    
      mkdir -p $(dirname $JBOSS_PIDFILE)
      chown $JBOSS_USER $(dirname $JBOSS_PIDFILE) || true
      #$CMD_PREFIX JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT 2>&1 > $JBOSS_CONSOLE_LOG &
      #$CMD_PREFIX JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT &
    
      if [ ! -z "$JBOSS_USER" ]; then
        if [ -x /lib/lsb/init-functions ]; then
          start-stop-daemon -user $JBOSS_USER LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT -c $JBOSS_CONFIG 2>&1 > $JBOSS_CONSOLE_LOG &
        else
          su - $JBOSS_USER -c "LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT -c $JBOSS_CONFIG" 2>&1 > $JBOSS_CONSOLE_LOG &
        fi
      fi
    
      count=0
      launched=false
    
      until [ $count -gt $STARTUP_WAIT ]
      do
        grep 'JBoss AS.*started in' $JBOSS_CONSOLE_LOG > /dev/null 
        if [ $? -eq 0 ] ; then
          launched=true
          break
        fi 
        sleep 1;
        count=`expr $count + 1`
      done
    
      printf success
      echo
      return 0
    }
    
    stop() {
      echo -n "Stopping $prog: "
      count=0;
    
      if [ -f $JBOSS_PIDFILE ]; then
        read kpid < $JBOSS_PIDFILE;
        kwait=$SHUTDOWN_WAIT
    
        # Try issuing SIGTERM
    
        kill -15 $kpid
        until [ `ps --pid $kpid 2> /dev/null | grep -c $kpid 2> /dev/null` -eq '0' ] || [ $count -gt $kwait ]
        do
          sleep 1;
          count=`expr $count + 1`
        done
    
        if [ $count -gt $kwait ]; then
          kill -9 $kpid
        fi
      fi
      rm -f $JBOSS_PIDFILE
      printf success
      echo
    }
    
    status() {
      if [ -f $JBOSS_PIDFILE ]; then
        read ppid < $JBOSS_PIDFILE
        if [ `ps --pid $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then
          echo "$prog is running (pid $ppid)"
          return 0
        else
          echo "$prog dead but pid file exists"
          return 1
        fi
      fi
      echo "$prog is not running"
      return 3
    }
    
    case "$1" in
      start)
          start
          ;;
      stop)
          stop
          ;;
      restart)
          $0 stop
          $0 start
          ;;
      status)
          status
          ;;
      *)
          ## If no parameters are given, print which are avaiable.
          echo "Usage: $0 {start|stop|status|restart|reload}"
          exit 1
          ;;
    esac
    

    now it's just a case of installing the jboss service using the above script.

    sudo update-rc.d jboss defaults
    

    I know there are lots of variations now, but hopefully this will help the next person searching. All i wanted was a JBPM host ...

提交回复
热议问题