occlum/demos/java/run_java_on_occlum.sh
LI Qing cd5cc0cb5c Update Java toolchains
1. Replace the OpenJDK with an unmodified OpenJDK from Alpine Linux
2. Add Alibaba Dragonwell as the default JDK for the Java demos
2020-08-15 19:12:39 +08:00

86 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
set -e
BLUE='\033[1;34m'
NC='\033[0m'
show_usage() {
echo "Error: invalid arguments"
echo "Usage: $0 web_app/hello"
exit 1
}
check_file_exist() {
file=$1
if [ ! -f ${file} ];then
echo "Error: cannot stat file '${file}'"
echo "Please see README and build it"
exit 1
fi
}
init_instance() {
# Init Occlum instance
rm -rf occlum_instance && mkdir occlum_instance
cd occlum_instance
occlum init
new_json="$(jq '.resource_limits.user_space_size = "1400MB" |
.resource_limits.kernel_space_heap_size="64MB" |
.resource_limits.max_num_of_threads = 64 |
.process.default_heap_size = "256MB" |
.process.default_mmap_size = "1120MB" |
.entry_points = [ "/usr/lib/jvm/java-11-alibaba-dragonwell/jre/bin" ] |
.env.default = [ "LD_LIBRARY_PATH=/usr/lib/jvm/java-11-alibaba-dragonwell/jre/lib/server:/usr/lib/jvm/java-11-alibaba-dragonwell/jre/lib:/usr/lib/jvm/java-11-alibaba-dragonwell/jre/../lib" ]' Occlum.json)" && \
echo "${new_json}" > Occlum.json
}
build_web() {
# Copy JVM and JAR file into Occlum instance and build
mkdir -p image/usr/lib/jvm
cp -r /opt/occlum/toolchains/jvm/java-11-alibaba-dragonwell image/usr/lib/jvm
cp /usr/local/occlum/x86_64-linux-musl/lib/libz.so.1 image/lib
mkdir -p image/usr/lib/spring
cp ../${jar_path} image/usr/lib/spring/
occlum build
}
run_web() {
jar_path=./gs-messaging-stomp-websocket/complete/target/gs-messaging-stomp-websocket-0.1.0.jar
check_file_exist ${jar_path}
jar_file=`basename "${jar_path}"`
init_instance
build_web
echo -e "${BLUE}occlum run JVM web app${NC}"
occlum run /usr/lib/jvm/java-11-alibaba-dragonwell/jre/bin/java -Xmx512m -XX:MaxMetaspaceSize=64m -Dos.name=Linux -jar /usr/lib/spring/${jar_file}
}
build_hello() {
# Copy JVM and class file into Occlum instance and build
mkdir -p image/usr/lib/jvm
cp -r /opt/occlum/toolchains/jvm/java-11-alibaba-dragonwell image/usr/lib/jvm
cp /usr/local/occlum/x86_64-linux-musl/lib/libz.so.1 image/lib
cp ../${hello} image
occlum build
}
run_hello() {
hello=./hello_world/Main.class
check_file_exist ${hello}
init_instance
build_hello
echo -e "${BLUE}occlum run JVM hello${NC}"
occlum run /usr/lib/jvm/java-11-alibaba-dragonwell/jre/bin/java -Xmx512m -XX:MaxMetaspaceSize=64m -Dos.name=Linux Main
}
arg=$1
case "$arg" in
web_app)
run_web
;;
hello)
run_hello
;;
*)
show_usage
esac