Statistics
| Branch: | Tag: | Revision:

root / jboss-config / 5.1.0 / bin / run.sh @ 1a2af27e

History | View | Annotate | Download (8 kB)

1
#!/bin/sh
2
### ====================================================================== ###
3
##                                                                          ##
4
##  JBoss Bootstrap Script                                                  ##
5
##                                                                          ##
6
### ====================================================================== ###
7

    
8
### $Id: run.sh 88978 2009-05-16 18:18:45Z alex.loubyansky@jboss.com $ ###
9

    
10
DIRNAME=`dirname $0`
11
PROGNAME=`basename $0`
12
GREP="grep"
13

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

    
17
#
18
# Helper to complain.
19
#
20
warn() {
21
    echo "${PROGNAME}: $*"
22
}
23

    
24
#
25
# Helper to puke.
26
#
27
die() {
28
    warn $*
29
    exit 1
30
}
31

    
32
# OS specific support (must be 'true' or 'false').
33
cygwin=false;
34
darwin=false;
35
linux=false;
36
case "`uname`" in
37
    CYGWIN*)
38
        cygwin=true
39
        ;;
40

    
41
    Darwin*)
42
        darwin=true
43
        ;;
44
        
45
    Linux)
46
        linux=true
47
        ;;
48
esac
49

    
50
# Read an optional running configuration file
51
if [ "x$RUN_CONF" = "x" ]; then
52
    RUN_CONF="$DIRNAME/run.conf"
53
fi
54
if [ -r "$RUN_CONF" ]; then
55
    . "$RUN_CONF"
56
fi
57

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

    
63
# For Cygwin, ensure paths are in UNIX format before anything is touched
64
if $cygwin ; then
65
    [ -n "$JBOSS_HOME" ] &&
66
        JBOSS_HOME=`cygpath --unix "$JBOSS_HOME"`
67
    [ -n "$JAVA_HOME" ] &&
68
        JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
69
    [ -n "$JAVAC_JAR" ] &&
70
        JAVAC_JAR=`cygpath --unix "$JAVAC_JAR"`
71
fi
72

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

    
80
# Increase the maximum file descriptors if we can
81
if [ "$cygwin" = "false" ]; then
82
    MAX_FD_LIMIT=`ulimit -H -n`
83
    if [ "$?" -eq 0 ]; then
84
        # Darwin does not allow RLIMIT_INFINITY on file soft limit
85
        if [ "$darwin" = "true" -a "$MAX_FD_LIMIT" = "unlimited" ]; then
86
            MAX_FD_LIMIT=`/usr/sbin/sysctl -n kern.maxfilesperproc`
87
        fi
88

    
89
	if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then
90
	    # use the system max
91
	    MAX_FD="$MAX_FD_LIMIT"
92
	fi
93

    
94
	ulimit -n $MAX_FD
95
	if [ "$?" -ne 0 ]; then
96
	    warn "Could not set maximum file descriptor limit: $MAX_FD"
97
	fi
98
    else
99
	warn "Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
100
    fi
101
fi
102

    
103
# Setup the JVM
104
if [ "x$JAVA" = "x" ]; then
105
    if [ "x$JAVA_HOME" != "x" ]; then
106
	JAVA="$JAVA_HOME/bin/java"
107
    else
108
	JAVA="java"
109
    fi
110
fi
111

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

    
119
# Tomcat uses the JDT Compiler
120
# Only include tools.jar if someone wants to use the JDK instead.
121
# compatible distribution which JAVA_HOME points to
122
if [ "x$JAVAC_JAR" = "x" ]; then
123
    JAVAC_JAR_FILE="$JAVA_HOME/lib/tools.jar"
124
else
125
    JAVAC_JAR_FILE="$JAVAC_JAR"
126
fi
127
if [ ! -f "$JAVAC_JAR_FILE" ]; then
128
   # MacOSX does not have a seperate tools.jar
129
   if [ "$darwin" != "true" -a "x$JAVAC_JAR" != "x" ]; then
130
      warn "Missing file: JAVAC_JAR=$JAVAC_JAR"
131
      warn "Unexpected results may occur."
132
   fi
133
   JAVAC_JAR_FILE=
134
fi
135

    
136
if [ "x$JBOSS_CLASSPATH" = "x" ]; then
137
    JBOSS_CLASSPATH="$JBOSS_BOOT_CLASSPATH"
138
else
139
    JBOSS_CLASSPATH="$JBOSS_CLASSPATH:$JBOSS_BOOT_CLASSPATH"
140
fi
141
if [ "x$JAVAC_JAR_FILE" != "x" ]; then
142
    JBOSS_CLASSPATH="$JBOSS_CLASSPATH:$JAVAC_JAR_FILE"
143
fi
144

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

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

    
154
    # Enable -server if we have Hotspot, unless we can't
155
    if [ "x$HAS_HOTSPOT" != "x" ]; then
156
	# MacOS does not support -server flag
157
	if [ "$darwin" != "true" ]; then
158
	    JAVA_OPTS="-server $JAVA_OPTS"
159
	fi
160
    fi
161
fi
162

    
163
# Setup JBoss Native library path
164
# Use the common JBoss Native convention
165
# for packing platform binaries
166
#
167
JBOSS_NATIVE_CPU=`uname -m`
168
case "$JBOSS_NATIVE_CPU" in
169
  sun4u*)
170
    JBOSS_NATIVE_CPU="sparcv9"
171
  ;;
172
  i86pc*)
173
    JBOSS_NATIVE_CPU="x86"
174
  ;;
175
  i[3-6]86*)
176
    JBOSS_NATIVE_CPU="x86"
177
  ;;
178
  x86_64*)
179
    JBOSS_NATIVE_CPU="x64"
180
  ;;
181
  ia64*)
182
    JBOSS_NATIVE_CPU="i64"
183
  ;;
184
  9000/800*)
185
    JBOSS_NATIVE_CPU="parisc2"
186
  ;;
187
  Power*)
188
    JBOSS_NATIVE_CPU="ppc"
189
  ;;
190
esac
191

    
192
JBOSS_NATIVE_SYS=`uname -s`
193
case "$JBOSS_NATIVE_SYS" in
194
  Linux*)
195
    JBOSS_NATIVE_SYS="linux2"
196
  ;;
197
  SunOS*)
198
    JBOSS_NATIVE_SYS="solaris"
199
  ;;
200
  HP-UX*)
201
    JBOSS_NATIVE_SYS="hpux"
202
  ;;
203
  CYGWIN*)
204
    JBOSS_NATIVE_SYS="windows"
205
  ;;
206
esac
207

    
208
JBOSS_NATIVE_DIR="$JBOSS_HOME/bin/META-INF/lib/$JBOSS_NATIVE_SYS/$JBOSS_NATIVE_CPU"
209
if [ -d "$JBOSS_NATIVE_DIR" ]; then
210
    if $cygwin ; then
211
        export PATH="$JBOSS_NATIVE_DIR:$PATH"
212
        JBOSS_NATIVE_DIR=`cygpath --path --windows "$JBOSS_NATIVE_DIR"`
213
    else
214
        if [ "x$LD_LIBRARY_PATH" = "x" ]; then
215
          LD_LIBRARY_PATH="$JBOSS_NATIVE_DIR:$JBOSS_HOME/bin/native"
216
        else
217
          LD_LIBRARY_PATH="$JBOSS_NATIVE_DIR:$LD_LIBRARY_PATH:$JBOSS_HOME/bin/native"
218
        fi
219
        export LD_LIBRARY_PATH
220
    fi
221
    if [ "x$JAVA_OPTS" = "x" ]; then
222
        JAVA_OPTS="-Djava.library.path=$JBOSS_NATIVE_DIR:$JBOSS_HOME/bin/native"
223
    else
224
        JAVA_OPTS="$JAVA_OPTS -Djava.library.path=$JBOSS_NATIVE_DIR:$JBOSS_HOME/bin/native"
225
    fi
226
fi
227

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

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

    
234
# For Cygwin, switch paths to Windows format before running java
235
if $cygwin; then
236
    JBOSS_HOME=`cygpath --path --windows "$JBOSS_HOME"`
237
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
238
    JBOSS_CLASSPATH=`cygpath --path --windows "$JBOSS_CLASSPATH"`
239
    JBOSS_ENDORSED_DIRS=`cygpath --path --windows "$JBOSS_ENDORSED_DIRS"`
240
fi
241

    
242
# Display our environment
243
echo "========================================================================="
244
echo ""
245
echo "  JBoss Bootstrap Environment"
246
echo ""
247
echo "  JBOSS_HOME: $JBOSS_HOME"
248
echo ""
249
echo "  JAVA: $JAVA"
250
echo ""
251
echo "  JAVA_OPTS: $JAVA_OPTS"
252
echo ""
253
echo "  CLASSPATH: $JBOSS_CLASSPATH"
254
echo ""
255
echo "========================================================================="
256
echo ""
257

    
258
while true; do
259
   if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then
260
      # Execute the JVM in the foreground
261
      "$JAVA" $JAVA_OPTS \
262
         -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
263
         -classpath "$JBOSS_CLASSPATH" \
264
         org.jboss.Main "$@"
265
      JBOSS_STATUS=$?
266
   else
267
      # Execute the JVM in the background
268
      "$JAVA" $JAVA_OPTS \
269
         -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
270
         -classpath "$JBOSS_CLASSPATH" \
271
         org.jboss.Main "$@" &
272
      JBOSS_PID=$!
273
      # Trap common signals and relay them to the jboss process
274
      trap "kill -HUP  $JBOSS_PID" HUP
275
      trap "kill -TERM $JBOSS_PID" INT
276
      trap "kill -QUIT $JBOSS_PID" QUIT
277
      trap "kill -PIPE $JBOSS_PID" PIPE
278
      trap "kill -TERM $JBOSS_PID" TERM
279
      # Wait until the background process exits
280
      WAIT_STATUS=128
281
      while [ "$WAIT_STATUS" -ge 128 ]; do
282
         wait $JBOSS_PID 2>/dev/null
283
         WAIT_STATUS=$?
284
         if [ "${WAIT_STATUS}" -gt 128 ]; then
285
            SIGNAL=`expr ${WAIT_STATUS} - 128`
286
            SIGNAL_NAME=`kill -l ${SIGNAL}`
287
            echo "*** JBossAS process (${JBOSS_PID}) received ${SIGNAL_NAME} signal ***" >&2
288
         fi          
289
      done
290
      if [ "${WAIT_STATUS}" -lt 127 ]; then
291
         JBOSS_STATUS=$WAIT_STATUS
292
      else
293
         JBOSS_STATUS=0
294
      fi      
295
   fi
296
   # If restart doesn't work, check you are running JBossAS 4.0.4+
297
   #    http://jira.jboss.com/jira/browse/JBAS-2483
298
   # or the following if you're running Red Hat 7.0
299
   #    http://developer.java.sun.com/developer/bugParade/bugs/4465334.html   
300
   if [ "$JBOSS_STATUS" -eq 10 ]; then
301
      echo "Restarting JBoss..."
302
   else
303
      exit $JBOSS_STATUS
304
   fi
305
done
306