diff --git a/demos/java/hello_world.yaml b/demos/java/hello_world.yaml new file mode 100644 index 00000000..a2a4046d --- /dev/null +++ b/demos/java/hello_world.yaml @@ -0,0 +1,9 @@ +includes: + - base.yaml + - java-11-alibaba-dragonwell.yaml +targets: + # copy java class file + - target: / + copy: + - files: + - ../hello_world/Main.class diff --git a/demos/java/process_builder.yaml b/demos/java/process_builder.yaml new file mode 100644 index 00000000..8a7b12fc --- /dev/null +++ b/demos/java/process_builder.yaml @@ -0,0 +1,15 @@ +includes: + - base.yaml + - java-11-alibaba-dragonwell.yaml +targets: + # copy java class file + - target: / + copy: + - files: + - ../processBuilder/processBuilder.class + # copy date used by processBuilder + - target: /bin + copy: + - files: + - /bin/date + \ No newline at end of file diff --git a/demos/java/run_java_on_occlum.sh b/demos/java/run_java_on_occlum.sh index d3ff8e04..17c02774 100755 --- a/demos/java/run_java_on_occlum.sh +++ b/demos/java/run_java_on_occlum.sh @@ -36,11 +36,8 @@ init_instance() { 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/ + rm -rf image + copy_bom -f ../webserver.yaml --root image --include-dir /opt/occlum/etc/template occlum build } @@ -56,10 +53,8 @@ run_web() { 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 + rm -rf image + copy_bom -f ../hello_world.yaml --root image --include-dir /opt/occlum/etc/template occlum build } @@ -74,11 +69,8 @@ run_hello() { build_processBuilder() { # 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 ../${app} image - cp /bin/date image/bin/ + rm -rf image + copy_bom -f ../process_builder.yaml --root image --include-dir /opt/occlum/etc/template # Need bigger user space size for multiprocess new_json="$(jq '.resource_limits.user_space_size = "6000MB"' Occlum.json)" && \ echo "${new_json}" > Occlum.json @@ -95,6 +87,12 @@ run_processBuilder() { -Djdk.lang.Process.launchMechanism=posix_spawn processBuilder } +# check if the libz softlink exists. If not, create the softlink to enable autodep for java +libz_file=/lib/libz.so.1 +if [ ! -f ${libz_file} ];then + ln -sf /usr/local/occlum/x86_64-linux-musl/lib/libz.so.1 ${libz_file} +fi + arg=$1 case "$arg" in web_app) diff --git a/demos/java/webserver.yaml b/demos/java/webserver.yaml new file mode 100644 index 00000000..dd1bbc9a --- /dev/null +++ b/demos/java/webserver.yaml @@ -0,0 +1,9 @@ +includes: + - base.yaml + - java-11-alibaba-dragonwell.yaml +targets: + # copy the web server + - target: /usr/lib/spring + copy: + - files: + - ../gs-messaging-stomp-websocket/complete/target/gs-messaging-stomp-websocket-0.1.0.jar diff --git a/tools/toolchains/java/install_dragonwell.sh b/tools/toolchains/java/install_dragonwell.sh index a801a35e..019daae0 100755 --- a/tools/toolchains/java/install_dragonwell.sh +++ b/tools/toolchains/java/install_dragonwell.sh @@ -41,3 +41,6 @@ EOF chmod +x ${INSTALL_DIR}/bin/occlum-java chmod +x ${INSTALL_DIR}/bin/occlum-javac + +# create softlink for libz to enable autodep for java +ln -sf /usr/local/occlum/x86_64-linux-musl/lib/libz.so.1 /lib/libz.so.1