Skip to content
This repository was archived by the owner on Sep 16, 2021. It is now read-only.

Commit 3644e77

Browse files
committed
Merge branch 'master' of github.com:jetty-project/appengine-java-vm-runtime into issue-81
2 parents 59013b5 + 0e859ac commit 3644e77

File tree

8 files changed

+124
-26
lines changed

8 files changed

+124
-26
lines changed

appengine-jetty-managed-runtime/src/main/docker/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ RUN sed -i 's/^\([a-zA-Z\.]*=\).*/#\1(see gae.ini)/' start.d/server.ini \
2121
&& rm -f start.d/setuid.ini start.d/deploy.ini \
2222
&& java -jar $JETTY_HOME/start.jar --add-to-startd=gae,gae-deploy \
2323
&& java -jar $JETTY_HOME/start.jar --dry-run \
24-
| sed 's/^.*java /& ${JAVA_OPTS} ${DBG_AGENT} ${PROF_AGENT} -Xms${HEAP_SIZE} -Xmx${HEAP_SIZE} /' > jetty_cmd.sh \
24+
| sed 's/^.*java /& ${JAVA_OPTS} ${ALPN_BOOT} ${DBG_AGENT} ${PROF_AGENT} -Xms${HEAP_SIZE} -Xmx${HEAP_SIZE} /' > jetty_cmd.sh \
2525
&& chmod +x /var/lib/jetty/jetty_run.sh
2626

2727
WORKDIR /app

appengine-jetty-managed-runtime/src/main/docker/jetty_run.sh

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ HEAP_SIZE=$(awk -v frac=$HEAP_SIZE_FRAC -v res=$RAM_RESERVED_MB /MemTotal/'{
1717
print int($2/1024*frac-res) "M" } ' /proc/meminfo)
1818
echo "Info: Limiting Java heap size to: $HEAP_SIZE"
1919

20+
ALPN_BOOT=
21+
if [[ -n "$ALPN_ENABLE" ]]; then
22+
ALPN_BOOT="$( /opt/alpn/format-env-appengine-vm.sh )"
23+
fi
24+
2025
DBG_AGENT=
2126
if [[ "$GAE_PARTITION" = "dev" ]]; then
2227
if [[ -n "$DBG_ENABLE" ]]; then
@@ -25,12 +30,12 @@ if [[ "$GAE_PARTITION" = "dev" ]]; then
2530
DBG_AGENT="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${DBG_PORT}"
2631
fi
2732
else
28-
DBG_AGENT="$( /home/vmagent/cdbg/format-env-appengine-vm.sh )"
33+
DBG_AGENT="$( /opt/cdbg/format-env-appengine-vm.sh )"
2934
fi
3035

3136
PROF_AGENT=
3237
if [[ -n "${CPROF_ENABLE}" ]]; then
33-
PROF_AGENT="$( /home/vmagent/cprof/format-env-appengine-vm.sh )"
38+
PROF_AGENT="$( /opt/cprof/format-env-appengine-vm.sh )"
3439
fi
3540

3641
# use generated fast cli:

gce-debian-openjdk/pom.xml

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,33 @@
2828
<artifactId>gce-debian-openjdk</artifactId>
2929
<packaging>pom</packaging>
3030

31+
<properties>
32+
<alpn.version>8.1.5.v20150921</alpn.version>
33+
</properties>
34+
3135
<build>
3236
<plugins>
37+
<plugin>
38+
<artifactId>maven-antrun-plugin</artifactId>
39+
<version>1.8</version>
40+
<executions>
41+
<execution>
42+
<id>generate-docker</id>
43+
<phase>generate-sources</phase>
44+
<configuration>
45+
<target>
46+
<copy todir="${project.build.directory}/generated-sources/docker">
47+
<fileset dir="${project.basedir}/src/main/docker"/>
48+
</copy>
49+
<replace file="${project.build.directory}/generated-sources/docker/Dockerfile" token="@@alpn.version@@" value="${alpn.version}"/>
50+
</target>
51+
</configuration>
52+
<goals>
53+
<goal>run</goal>
54+
</goals>
55+
</execution>
56+
</executions>
57+
</plugin>
3358
<plugin>
3459
<groupId>com.spotify</groupId>
3560
<artifactId>docker-maven-plugin</artifactId>
@@ -42,7 +67,7 @@
4267
</goals>
4368
<configuration>
4469
<imageName>gce-debian-openjdk:8-jre</imageName>
45-
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
70+
<dockerDirectory>${project.basedir}/target/generated-sources/docker</dockerDirectory>
4671
</configuration>
4772
</execution>
4873
<execution>
@@ -63,4 +88,3 @@
6388
</plugins>
6489
</build>
6590
</project>
66-

gce-debian-openjdk/src/main/docker/Dockerfile

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,12 @@ rm /var/lib/apt/lists/*_*
3232
RUN /var/lib/dpkg/info/ca-certificates-java.postinst configure
3333

3434
# Add the cloud debugger and profiler libraries
35-
ADD https://storage.googleapis.com/cloud-debugger/appengine-java/current/cdbg_java_agent.tar.gz /home/vmagent/cdbg/
36-
ADD https://storage.googleapis.com/cloud-profiler/appengine-java/current/cloud_profiler_java_agent.tar.gz /home/vmagent/cprof/
37-
RUN tar Cxfvz /home/vmagent/cdbg /home/vmagent/cdbg/cdbg_java_agent.tar.gz --no-same-owner \
38-
&& tar Cxfvz /home/vmagent/cprof /home/vmagent/cprof/cloud_profiler_java_agent.tar.gz --no-same-owner \
39-
&& rm /home/vmagent/cdbg/cdbg_java_agent.tar.gz /home/vmagent/cprof/cloud_profiler_java_agent.tar.gz
35+
ADD https://storage.googleapis.com/cloud-debugger/appengine-java/current/cdbg_java_agent.tar.gz /opt/cdbg/
36+
ADD https://storage.googleapis.com/cloud-profiler/appengine-java/current/cloud_profiler_java_agent.tar.gz /opt/cprof/
37+
ADD ./alpn /opt/alpn
38+
ADD http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/@@alpn.version@@/alpn-boot-@@alpn.version@@.jar /opt/alpn/
39+
RUN tar Cxfvz /opt/cdbg /opt/cdbg/cdbg_java_agent.tar.gz --no-same-owner \
40+
&& tar Cxfvz /opt/cprof /opt/cprof/cloud_profiler_java_agent.tar.gz --no-same-owner \
41+
&& rm /opt/cdbg/cdbg_java_agent.tar.gz /opt/cprof/cloud_profiler_java_agent.tar.gz \
42+
&& ln -s /opt/alpn/alpn-boot-8.1.5.v20150921.jar /opt/alpn/alpn-boot.jar \
43+
&& chmod +x /opt/alpn/format-env-appengine-vm.sh
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/bash
2+
3+
#
4+
# Formats Java command line option to enable ALPN
5+
#
6+
# The script assumes that AppEngine specific environment variables are set.
7+
#
8+
# Usage example:
9+
# java $( /usr/local/alpn/format-env-appengine-vm.sh ) -cp ...
10+
#
11+
12+
if [[ -n "${ALPN_DISABLE}" ]]; then
13+
>&2 echo "ALPN_DISABLE is set, ALPN will not be loaded"
14+
exit
15+
fi
16+
17+
ALPN_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
18+
19+
ARGS="-Xbootclasspath/p:${ALPN_ROOT}/alpn-boot.jar"
20+
21+
echo "${ARGS}"
22+

gce-jetty/src/main/docker/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ RUN mv /usr/local/jetty-distribution-* $JETTY_HOME \
2929
ENV JETTY_BASE /var/lib/jetty
3030
RUN mkdir -p $JETTY_BASE
3131
WORKDIR $JETTY_BASE
32+
ADD gce-alpn.mod modules/
3233
RUN java -jar $JETTY_HOME/start.jar --add-to-startd=http,deploy,jsp,jstl,setuid \
3334
&& chown -R jetty:jetty $JETTY_BASE \
3435
&& mkdir /tmp/jetty && chown -R jetty:jetty /tmp/jetty \

gce-jetty/src/main/docker/docker-entrypoint.bash

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
11
#!/bin/bash
22

33
if ! type "$1" &>/dev/null; then
4-
DBG_AGENT=
5-
if [[ -n "$DBG_ENABLE" ]]; then
6-
if [[ "$GAE_PARTITION" = "dev" ]]; then
7-
DBG_AGENT="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${DBG_PORT:-5005}"
8-
else
9-
DBG_AGENT="$( /home/vmagent/cdbg/format-env-appengine-vm.sh )"
10-
fi
4+
ALPN_BOOT=
5+
if [[ -n "$ALPN_ENABLE" ]]; then
6+
ALPN_BOOT="$( /opt/alpn/format-env-appengine-vm.sh )"
7+
fi
8+
9+
DBG_AGENT=
10+
if [[ -n "$DBG_ENABLE" ]]; then
11+
if [[ "$GAE_PARTITION" = "dev" ]]; then
12+
DBG_AGENT="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${DBG_PORT:-5005}"
13+
else
14+
DBG_AGENT="$( /home/vmagent/cdbg/format-env-appengine-vm.sh )"
1115
fi
12-
13-
PROF_AGENT=
14-
if [[ -n "${CPROF_ENABLE}" ]]; then
15-
if [[ "$GAE_PARTITION" = "dev" ]]; then
16-
PROF_AGENT=
17-
else
18-
PROF_AGENT="$( /home/vmagent/cprof/format-env-appengine-vm.sh )"
19-
fi
16+
fi
17+
18+
PROF_AGENT=
19+
if [[ -n "${CPROF_ENABLE}" ]]; then
20+
if [[ "$GAE_PARTITION" = "dev" ]]; then
21+
PROF_AGENT=
22+
else
23+
PROF_AGENT="$( /home/vmagent/cprof/format-env-appengine-vm.sh )"
2024
fi
25+
fi
2126

22-
set -- java $DBG_AGENT $PROF_AGENT -jar "-Djava.io.tmpdir=$TMPDIR" "-Djetty.base=$JETTY_BASE" "$JETTY_HOME/start.jar" "$@"
27+
set -- java $ALPN_BOOT $DBG_AGENT $PROF_AGENT -jar "-Djava.io.tmpdir=$TMPDIR" "-Djetty.base=$JETTY_BASE" "$JETTY_HOME/start.jar" "$@"
2328
fi
2429

2530
exec "$@"
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# ALPN can be proved by the gce-debian-openjdk image if the ALPN_ENABLE
2+
# environment variable is set.
3+
#
4+
# This module is an alternate to the standard jetty alpn.mod that uses
5+
# the gce provided ALPN implementation. It should be explicitly enabled
6+
# prior http2 or any module that depends on alpn.
7+
8+
[name]
9+
alpn
10+
11+
[depend]
12+
ssl
13+
14+
[lib]
15+
lib/jetty-alpn-client-${jetty.version}.jar
16+
lib/jetty-alpn-server-${jetty.version}.jar
17+
18+
[xml]
19+
etc/jetty-alpn.xml
20+
21+
[files]
22+
/opt/alpn/
23+
lib/
24+
lib/alpn/
25+
26+
[ini-template]
27+
## Overrides the order protocols are chosen by the server.
28+
## The default order is that specified by the order of the
29+
## modules declared in start.ini.
30+
# jetty.alpn.protocols=h2-16,http/1.1
31+
32+
## Specifies what protocol to use when negotiation fails.
33+
# jetty.alpn.defaultProtocol=http/1.1
34+
35+
## ALPN debug logging on System.err
36+
# jetty.alpn.debug=false
37+

0 commit comments

Comments
 (0)