1#!/bin/sh
2
3DIRNAME=`dirname "$0"`
4PROGNAME=`basename "$0"`
5GREP="grep"
6SERVER_OPTS=""
7
8. "$DIRNAME/common.sh"
9
10# Parsing incoming parameters
11while [ "$#" -gt 0 ]
12do
13    case "$1" in
14      -secmgr)
15          SECMGR="true"
16          ;;
17      -Djava.security.manager)
18          echo "ERROR: The use of -Djava.security.manager has been removed. Please use the -secmgr command line argument or SECMGR=true environment variable."
19          exit 1
20          ;;
21      --)
22          shift
23          break;;
24      *)
25          SERVER_OPTS="$SERVER_OPTS '$1'"
26          ;;
27    esac
28    shift
29done
30
31# Use the maximum available, or set MAX_FD != -1 to use that
32MAX_FD="maximum"
33
34# OS specific support (must be 'true' or 'false').
35cygwin=false;
36darwin=false;
37linux=false;
38case "`uname`" in
39    CYGWIN*)
40        cygwin=true
41        ;;
42
43    Darwin*)
44        darwin=true
45        ;;
46
47    Linux)
48        linux=true
49        ;;
50esac
51
52# Read an optional running configuration file
53if [ "x$RUN_CONF" = "x" ]; then
54    RUN_CONF="$DIRNAME/appclient.conf"
55fi
56if [ -r "$RUN_CONF" ]; then
57    . "$RUN_CONF"
58fi
59
60# For Cygwin, ensure paths are in UNIX format before anything is touched
61if $cygwin ; then
62    [ -n "$JBOSS_HOME" ] &&
63        JBOSS_HOME=`cygpath --unix "$JBOSS_HOME"`
64    [ -n "$JAVA_HOME" ] &&
65        JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
66    [ -n "$JAVAC_JAR" ] &&
67        JAVAC_JAR=`cygpath --unix "$JAVAC_JAR"`
68fi
69
70# Setup JBOSS_HOME
71RESOLVED_JBOSS_HOME=`cd "$DIRNAME/.."; pwd`
72if [ "x$JBOSS_HOME" = "x" ]; then
73    # get the full path (without any relative bits)
74    JBOSS_HOME=$RESOLVED_JBOSS_HOME
75else
76 SANITIZED_JBOSS_HOME=`cd "$JBOSS_HOME"; pwd`
77 if [ "$RESOLVED_JBOSS_HOME" != "$SANITIZED_JBOSS_HOME" ]; then
78   echo "WARNING JBOSS_HOME may be pointing to a different installation - unpredictable results may occur."
79   echo ""
80 fi
81fi
82export JBOSS_HOME
83
84# Setup the JVM
85if [ "x$JAVA" = "x" ]; then
86    if [ "x$JAVA_HOME" != "x" ]; then
87        JAVA="$JAVA_HOME/bin/java"
88    else
89        JAVA="java"
90    fi
91fi
92
93# Set default modular JVM options
94setDefaultModularJvmOptions $JAVA_OPTS
95JAVA_OPTS="$JAVA_OPTS $DEFAULT_MODULAR_JVM_OPTIONS"
96
97# Check for -d32/-d64 in JAVA_OPTS
98JVM_OPTVERSION="-version"
99JVM_D64_OPTION=`echo $JAVA_OPTS | $GREP "\-d64"`
100JVM_D32_OPTION=`echo $JAVA_OPTS | $GREP "\-d32"`
101test "x$JVM_D64_OPTION" != "x" && JVM_OPTVERSION="-d64 $JVM_OPTVERSION"
102test "x$JVM_D32_OPTION" != "x" && JVM_OPTVERSION="-d32 $JVM_OPTVERSION"
103
104# If -server not set in JAVA_OPTS, set it, if supported
105SERVER_SET=`echo $JAVA_OPTS | $GREP "\-server"`
106if [ "x$SERVER_SET" = "x" ]; then
107
108    # Check for SUN(tm) JVM w/ HotSpot support
109    if [ "x$HAS_HOTSPOT" = "x" ]; then
110        HAS_HOTSPOT=`"$JAVA" $JVM_OPTVERSION -version 2>&1 | $GREP -i HotSpot`
111    fi
112
113    # Check for OpenJDK JVM w/server support
114    if [ "x$HAS_OPENJDK" = "x" ]; then
115        HAS_OPENJDK=`"$JAVA" $JVM_OPTVERSION 2>&1 | $GREP -i OpenJDK`
116    fi
117
118    # Enable -server if we have Hotspot or OpenJDK, unless we can't
119    if [ "x$HAS_HOTSPOT" != "x" ] || [ "x$HAS_OPENJDK" != "x" ]; then
120        # MacOS does not support -server flag
121        if [ "$darwin" != "true" ]; then
122            JAVA_OPTS="-server $JAVA_OPTS"
123            JVM_OPTVERSION="-server $JVM_OPTVERSION"
124        fi
125    fi
126else
127    JVM_OPTVERSION="-server $JVM_OPTVERSION"
128fi
129
130if [ "x$JBOSS_MODULEPATH" = "x" ]; then
131    JBOSS_MODULEPATH="$JBOSS_HOME/modules"
132fi
133
134# For Cygwin, switch paths to Windows format before running java
135if $cygwin; then
136    JBOSS_HOME=`cygpath --path --windows "$JBOSS_HOME"`
137    JBOSS_MODULEPATH=`cygpath --path --windows "$JBOSS_MODULEPATH"`
138fi
139
140# Process the JAVA_OPTS failing if the java.security.manager is set.
141SECURITY_MANAGER_SET=`echo $JAVA_OPTS | $GREP "java\.security\.manager"`
142if [ "x$SECURITY_MANAGER_SET" != "x" ]; then
143    echo "ERROR: The use of -Djava.security.manager has been removed. Please use the -secmgr command line argument or SECMGR=true environment variable."
144    exit 1
145fi
146
147# Set up the module arguments
148MODULE_OPTS=""
149if [ "$SECMGR" = "true" ]; then
150    MODULE_OPTS="-secmgr";
151fi
152
153CLASSPATH="$CLASSPATH:\""$JBOSS_HOME"\"/jboss-modules.jar"
154# Execute the JVM in the foreground
155eval \"$JAVA\" $JAVA_OPTS \
156 -cp "$CLASSPATH" \
157 \"-Dorg.jboss.boot.log.file="$JBOSS_HOME"/appclient/log/appclient.log\" \
158 \"-Dlogging.configuration=file:"$JBOSS_HOME"/appclient/configuration/logging.properties\" \
159 org.jboss.modules.Main \
160 $MODULE_OPTS \
161 -mp \""${JBOSS_MODULEPATH}"\" \
162 org.jboss.as.appclient \
163 -Djboss.home.dir=\""$JBOSS_HOME"\" \
164 -Djboss.server.base.dir=\""$JBOSS_HOME"/appclient\" \
165 "$SERVER_OPTS"
166JBOSS_STATUS=$?
167exit $JBOSS_STATUS
168