3 Replies Latest reply on Apr 23, 2008 7:02 PM by Stephan Schuster

    JBOSS 4.0.4.GA clustering in Linux

    girija sahoo Newbie

      I have installed two JBoss 4.0.4.GA in two Linux server. Started the two server by using sh run.sh -c all. But two server automatically not detecting each other for clustering. But the same is working in Windows environment. Can anybody help me.

      Thanks in advance.

        • 1. Re: JBOSS 4.0.4.GA clustering in Linux
          Stephan Schuster Newbie

          I'm having a similar basic problem with the 4.2.1 GA. I upgraded from 4.0.2, where clustering worked fine. With 4.2.1 GA the servers even don't start up, but seem to hang somewhere in the JGroups initialisation. I'm using Suse Linux 10.2, and tried it both with JDKs 5 and 6. If anyone has come accross a similar problem and has any hints, this would be appreciated.

          • 3. Re: JBOSS 4.0.4.GA clustering in Linux
            Stephan Schuster Newbie

            It's the default run.sh:

            #!/bin/sh
            ### ====================================================================== ###
            ## ##
            ## JBoss Bootstrap Script ##
            ## ##
            ### ====================================================================== ###

            ### $Id: run.sh 64199 2007-07-23 15:57:38Z cazzius $ ###

            DIRNAME=`dirname $0`
            PROGNAME=`basename $0`
            GREP="grep"

            # Use the maximum available, or set MAX_FD != -1 to use that
            MAX_FD="maximum"

            #
            # Helper to complain.
            #
            warn() {
            echo "${PROGNAME}: $*"
            }

            #
            # Helper to puke.
            #
            die() {
            warn $*
            exit 1
            }

            # OS specific support (must be 'true' or 'false').
            cygwin=false;
            darwin=false;
            linux=false;
            case "`uname`" in
            CYGWIN*)
            cygwin=true
            ;;

            Darwin*)
            darwin=true
            ;;

            Linux)
            linux=true
            ;;
            esac

            # Read an optional running configuration file
            if [ "x$RUN_CONF" = "x" ]; then
            RUN_CONF="$DIRNAME/run.conf"
            fi
            if [ -r "$RUN_CONF" ]; then
            . "$RUN_CONF"
            fi

            # Force IPv4 on Linux systems since IPv6 doesn't work correctly with jdk5 and lower
            if [ "$linux" = "true" ]; then
            JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
            fi

            # For Cygwin, ensure paths are in UNIX format before anything is touched
            if $cygwin ; then
            [ -n "$JBOSS_HOME" ] &&
            JBOSS_HOME=`cygpath --unix "$JBOSS_HOME"`
            [ -n "$JAVA_HOME" ] &&
            JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
            [ -n "$JAVAC_JAR" ] &&
            JAVAC_JAR=`cygpath --unix "$JAVAC_JAR"`
            fi

            # Setup JBOSS_HOME
            if [ "x$JBOSS_HOME" = "x" ]; then
            # get the full path (without any relative bits)
            JBOSS_HOME=`cd $DIRNAME/..; pwd`
            fi
            export JBOSS_HOME

            # Increase the maximum file descriptors if we can
            if [ "$cygwin" = "false" ]; then
            MAX_FD_LIMIT=`ulimit -H -n`
            if [ $? -eq 0 ]; then
            if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then
            # use the system max
            MAX_FD="$MAX_FD_LIMIT"
            fi

            ulimit -n $MAX_FD
            if [ $? -ne 0 ]; then
            warn "Could not set maximum file descriptor limit: $MAX_FD"
            fi
            else
            warn "Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
            fi
            fi

            # Setup the JVM
            if [ "x$JAVA" = "x" ]; then
            if [ "x$JAVA_HOME" != "x" ]; then
            JAVA="$JAVA_HOME/bin/java"
            else
            JAVA="java"
            fi
            fi

            # Setup the classpath
            runjar="$JBOSS_HOME/bin/run.jar"
            if [ ! -f "$runjar" ]; then
            die "Missing required file: $runjar"
            fi
            JBOSS_BOOT_CLASSPATH="$runjar"

            # Tomcat uses the JDT Compiler
            # Only include tools.jar if someone wants to use the JDK instead.
            # compatible distribution which JAVA_HOME points to
            if [ "x$JAVAC_JAR" = "x" ]; then
            JAVAC_JAR_FILE="$JAVA_HOME/lib/tools.jar"
            else
            JAVAC_JAR_FILE="$JAVAC_JAR"
            fi
            if [ ! -f "$JAVAC_JAR_FILE" ]; then
            # MacOSX does not have a seperate tools.jar
            if [ "$darwin" != "true" -a "x$JAVAC_JAR" != "x" ]; then
            warn "Missing file: JAVAC_JAR=$JAVAC_JAR"
            warn "Unexpected results may occur."
            fi
            JAVAC_JAR_FILE=
            fi

            if [ "x$JBOSS_CLASSPATH" = "x" ]; then
            JBOSS_CLASSPATH="$JBOSS_BOOT_CLASSPATH"
            else
            JBOSS_CLASSPATH="$JBOSS_CLASSPATH:$JBOSS_BOOT_CLASSPATH"
            fi
            if [ "x$JAVAC_JAR_FILE" != "x" ]; then
            JBOSS_CLASSPATH="$JBOSS_CLASSPATH:$JAVAC_JAR_FILE"
            fi

            # If -server not set in JAVA_OPTS, set it, if supported
            SERVER_SET=`echo $JAVA_OPTS | $GREP "\-server"`
            if [ "x$SERVER_SET" = "x" ]; then

            # Check for SUN(tm) JVM w/ HotSpot support
            if [ "x$HAS_HOTSPOT" = "x" ]; then
            HAS_HOTSPOT=`"$JAVA" -version 2>&1 | $GREP -i HotSpot`
            fi

            # Enable -server if we have Hotspot, unless we can't
            if [ "x$HAS_HOTSPOT" != "x" ]; then
            # MacOS does not support -server flag
            if [ "$darwin" != "true" ]; then
            JAVA_OPTS="-server $JAVA_OPTS"
            fi
            fi
            fi

            # Setup JBosst Native library path
            JBOSS_NATIVE_DIR="$JBOSS_HOME/bin/native"
            if [ -d "$JBOSS_NATIVE_DIR" ]; then
            if $cygwin ; then
            export PATH="$JBOSS_NATIVE_DIR:$PATH"
            JBOSS_NATIVE_DIR=`cygpath --dos "$JBOSS_NATIVE_DIR"`
            fi
            if [ "x$LD_LIBRARY_PATH" = "x" ]; then
            LD_LIBRARY_PATH="$JBOSS_NATIVE_DIR"
            else
            LD_LIBRARY_PATH="$JBOSS_NATIVE_DIR:$LD_LIBRARY_PATH"
            fi
            export LD_LIBRARY_PATH
            if [ "x$JAVA_OPTS" = "x" ]; then
            JAVA_OPTS="-Djava.library.path=$JBOSS_NATIVE_DIR"
            else
            JAVA_OPTS="$JAVA_OPTS -Djava.library.path=$JBOSS_NATIVE_DIR"
            fi
            fi

            # Setup JBoss specific properties
            JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"

            # Setup the java endorsed dirs
            JBOSS_ENDORSED_DIRS="$JBOSS_HOME/lib/endorsed"

            # For Cygwin, switch paths to Windows format before running java
            if $cygwin; then
            JBOSS_HOME=`cygpath --path --windows "$JBOSS_HOME"`
            JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
            JBOSS_CLASSPATH=`cygpath --path --windows "$JBOSS_CLASSPATH"`
            JBOSS_ENDORSED_DIRS=`cygpath --path --windows "$JBOSS_ENDORSED_DIRS"`
            fi

            # Display our environment
            echo "========================================================================="
            echo ""
            echo " JBoss Bootstrap Environment"
            echo ""
            echo " JBOSS_HOME: $JBOSS_HOME"
            echo ""
            echo " JAVA: $JAVA"
            echo ""
            echo " JAVA_OPTS: $JAVA_OPTS"
            echo ""
            echo " CLASSPATH: $JBOSS_CLASSPATH"
            echo ""
            echo "========================================================================="
            echo ""

            while true; do
            if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then
            # Execute the JVM in the foreground
            "$JAVA" $JAVA_OPTS \
            -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
            -classpath "$JBOSS_CLASSPATH" \
            org.jboss.Main "$@"
            JBOSS_STATUS=$?
            else
            # Execute the JVM in the background
            "$JAVA" $JAVA_OPTS \
            -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
            -classpath "$JBOSS_CLASSPATH" \
            org.jboss.Main "$@" &
            JBOSS_PID=$!
            # Trap common signals and relay them to the jboss process
            trap "kill -HUP $JBOSS_PID" HUP
            trap "kill -TERM $JBOSS_PID" INT
            trap "kill -QUIT $JBOSS_PID" QUIT
            trap "kill -PIPE $JBOSS_PID" PIPE
            trap "kill -TERM $JBOSS_PID" TERM
            # Wait until the background process exits
            WAIT_STATUS=0
            while [ "$WAIT_STATUS" -ne 127 ]; do
            JBOSS_STATUS=$WAIT_STATUS
            wait $JBOSS_PID 2>/dev/null
            WAIT_STATUS=$?
            done
            fi
            # If restart doesn't work, check you are running JBossAS 4.0.4+
            # http://jira.jboss.com/jira/browse/JBAS-2483
            # or the following if you're running Red Hat 7.0
            # http://developer.java.sun.com/developer/bugParade/bugs/4465334.html
            if [ $JBOSS_STATUS -eq 10 ]; then
            echo "Restarting JBoss..."
            else
            exit $JBOSS_STATUS
            fi
            done