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 |
|