[JAVA] Versuchen Sie, einen anderen Servlet-Container-Steg mit Docker zu verwenden

Eclipse Jetty ist eine Java-Servlet-Ausführungsumgebung (Servant-Container, teilweise Implementierung von Java EE) und ein Webserver. Apache Tomcat ist eine bekannte Implementierung des Servlet-Containers, aber Jetty ist älter [^ 1] und leichter [^ 2]. Kommerzielle Unterstützung bieten der aktive Mitwirkende Webtide und in Apache Hadoop integriert. / Jetty) oder von Google App Engine verwendet.

[^ 1]: Jetty wurde erstmals 1995 und Tomcat erstmals 1999 veröffentlicht.

Jetty hat einen geringeren Speicherbedarf als Tomcat, wodurch beim Ausführen von Java-Servlets in einer containerisierten virtualisierten Umgebung Ressourcen gespart werden. In diesem Artikel wird das Verfahren zur Verwendung eines solchen Stegs in Docker vorgestellt.

Verwenden Sie Jetty mit Docker

Docker Official Image wird bereitgestellt [^ 3]. Sie können für jede Version von Jetty ein Bild aus einer Kombination von OpenJDK LTS (Red Hat Build) und JRE, Debian und Debian Slim auswählen.

Ausführung Entwickler Java Java EE Servlet JSP Support-Zeitraum Status Bemerkungen
11 Eclipse 11~ 8 4.0.2 2.3 2020~ Alpha In JakartaEE Namespace geändert
10 Eclipse 11~ 8 4.0.2 2.3 2019~ Beta
9.4 Eclipse 1.8~ 7 3.1 2.3 2016~ stabile Version
9.3 Eclipse 1.8~ 7 3.1 2.3 2015~ nicht empfohlen HTTP/2, unterstützen Fast CGI
9.2 Eclipse 1.7~ 7 3.1 2.3 2014~2018 EOL Verteilte Docker-Bilder
9.1 Eclipse 1.7~ 7 3.1 2.3 2013~2014 EOL
9 Eclipse 1.7~ 7 3.1-beta 2.3 2013~2013 EOL
8 Eclipse/Codehaus 1.6~ 6 3 2.2 2009~2014 EOL
7 Eclipse/Codehaus 1.5~ 5 2.5 2.1 2008~2014 EOL Unterstützt WebSocket und SPDY v3
6 Codehaus 1.4~1.5 5 2.5 2 2006~2010 EOL
5 Sourceforge 1.2~1.5 1.4 2.4 2 2003~2009 Antiquität
4 Sourceforge 1.2、J2ME 1.3 2.3 1.2 2001~2006 Uralt
3 Sourceforge 1.2 1.2 2.2 1.1 1999~2002 Versteinert HTTP/1.Unterstützung 1
2 Mortbay 1.1 - 2.1 1 1998~2000 Legendär
1 Mortbay 1 - - - 1995~1998 Mythisch

Hier wählen wir Jetty9 auf OpenJDK11 auf Debian10:

[^ 3]: Übrigens wird Jetty Docker Image der Google Cloud Platform auch unter der Apache-2.0-Lizenz veröffentlicht.

docker pull jetty:9.4.31-jdk11

Die Bereitstellung des Servlets ist einfach. Legen Sie einfach die WAR-Datei oder das unkomprimierte Servlet-Verzeichnis in / var / lib / jetty / webapps ab:

FROM jetty:9.4.31-jdk11
ADD sample.war /var/lib/jetty/webapps

Sie können auch einen beliebigen Speicherort in "context.xml" angeben:

FROM jetty:9.4.31-jdk11
ADD sampleApp.xml /var/lib/jetty/webapps
ADD sample /usr/local/sample

sampleApp.xml


<Configure class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="contextPath">/sample</Set>
    <Set name="war">/usr/local/sample</Set>
</Configure>

Umgebungseinstellung

Sie können die aktuellen Einstellungen anzeigen, indem Sie die Option "--list-config" angeben:

$ docker run --rm jetty:9.4.31-jdk11 --list-config

Java Environment:
-----------------
 java.home = /usr/local/openjdk-11 (null)
 java.vm.vendor = Oracle Corporation (null)
 java.vm.version = 11.0.8+10 (null)
 java.vm.name = OpenJDK 64-Bit Server VM (null)
 java.vm.info = mixed mode (null)
 java.runtime.name = OpenJDK Runtime Environment (null)
 java.runtime.version = 11.0.8+10 (null)
 java.io.tmpdir = /tmp/jetty (null)
 user.dir = /var/lib/jetty (null)
 user.language = en (null)
 user.country = null (null)

Jetty Environment:
-----------------
 jetty.version = 9.4.31.v20200723
 jetty.tag.version = master
 jetty.home = /usr/local/jetty
 jetty.base = /var/lib/jetty

Config Search Order:
--------------------
 <command-line>
 ${jetty.base} -> /var/lib/jetty
 ${jetty.home} -> /usr/local/jetty


JVM Arguments:
--------------
 (no jvm args specified)

System Properties:
------------------
 (no system properties specified)

Properties:
-----------
 java.version = 11.0.8
 java.version.major = 11
 java.version.micro = 8
 java.version.minor = 0
 java.version.platform = 11
 jetty.base = /var/lib/jetty
 jetty.base.uri = file:///var/lib/jetty
 jetty.home = /usr/local/jetty
 jetty.home.uri = file:///usr/local/jetty

Jetty Server Classpath:
-----------------------
Version Information on 37 entries in the classpath.
Note: order presented here is how they would appear on the classpath.
      changes to the --module=name command line options will be reflected here.
 0:      1.4.1.v201005082020 | ${jetty.home}/lib/mail/javax.mail.glassfish-1.4.1.v201005082020.jar
 1:                    (dir) | ${jetty.base}/resources
 2:                    3.1.0 | ${jetty.home}/lib/servlet-api-3.1.jar
 3:                 3.1.0.M0 | ${jetty.home}/lib/jetty-schemas-3.1.jar
 4:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-http-9.4.31.v20200723.jar
 5:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-server-9.4.31.v20200723.jar
 6:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-xml-9.4.31.v20200723.jar
 7:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-util-9.4.31.v20200723.jar
 8:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-io-9.4.31.v20200723.jar
 9:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-jndi-9.4.31.v20200723.jar
10:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-security-9.4.31.v20200723.jar
11:                      1.3 | ${jetty.home}/lib/transactions/javax.transaction-api-1.3.jar
12:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-servlet-9.4.31.v20200723.jar
13:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-webapp-9.4.31.v20200723.jar
14:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-plus-9.4.31.v20200723.jar
15:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-annotations-9.4.31.v20200723.jar
16:                    7.3.1 | ${jetty.home}/lib/annotations/asm-7.3.1.jar
17:                    7.3.1 | ${jetty.home}/lib/annotations/asm-analysis-7.3.1.jar
18:                    7.3.1 | ${jetty.home}/lib/annotations/asm-commons-7.3.1.jar
19:                    7.3.1 | ${jetty.home}/lib/annotations/asm-tree-7.3.1.jar
20:                      1.3 | ${jetty.home}/lib/annotations/javax.annotation-api-1.3.jar
21:    3.19.0.v20190903-0936 | ${jetty.home}/lib/apache-jsp/org.eclipse.jdt.ecj-3.19.0.jar
22:         9.4.31.v20200723 | ${jetty.home}/lib/apache-jsp/org.eclipse.jetty.apache-jsp-9.4.31.v20200723.jar
23:                   8.5.54 | ${jetty.home}/lib/apache-jsp/org.mortbay.jasper.apache-el-8.5.54.jar
24:                   8.5.54 | ${jetty.home}/lib/apache-jsp/org.mortbay.jasper.apache-jsp-8.5.54.jar
25:                    1.2.5 | ${jetty.home}/lib/apache-jstl/org.apache.taglibs.taglibs-standard-impl-1.2.5.jar
26:                    1.2.5 | ${jetty.home}/lib/apache-jstl/org.apache.taglibs.taglibs-standard-spec-1.2.5.jar
27:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-client-9.4.31.v20200723.jar
28:         9.4.31.v20200723 | ${jetty.home}/lib/jetty-deploy-9.4.31.v20200723.jar
29:                      1.0 | ${jetty.home}/lib/websocket/javax.websocket-api-1.0.jar
30:         9.4.31.v20200723 | ${jetty.home}/lib/websocket/javax-websocket-client-impl-9.4.31.v20200723.jar
31:         9.4.31.v20200723 | ${jetty.home}/lib/websocket/javax-websocket-server-impl-9.4.31.v20200723.jar
32:         9.4.31.v20200723 | ${jetty.home}/lib/websocket/websocket-api-9.4.31.v20200723.jar
33:         9.4.31.v20200723 | ${jetty.home}/lib/websocket/websocket-client-9.4.31.v20200723.jar
34:         9.4.31.v20200723 | ${jetty.home}/lib/websocket/websocket-common-9.4.31.v20200723.jar
35:         9.4.31.v20200723 | ${jetty.home}/lib/websocket/websocket-server-9.4.31.v20200723.jar
36:         9.4.31.v20200723 | ${jetty.home}/lib/websocket/websocket-servlet-9.4.31.v20200723.jar

Jetty Active XMLs:
------------------
 ${jetty.home}/etc/jetty-bytebufferpool.xml
 ${jetty.home}/etc/jetty-threadpool.xml
 ${jetty.home}/etc/jetty.xml
 ${jetty.home}/etc/jetty-webapp.xml
 ${jetty.home}/etc/jetty-plus.xml
 ${jetty.home}/etc/jetty-annotations.xml
 ${jetty.home}/etc/jetty-deploy.xml
 ${jetty.home}/etc/jetty-http.xml

Informationen zu den einstellbaren Elementen finden Sie unter Offizielle Dokumente.

Die JVM-Option kann mit der Umgebungsvariablen "JAVA_OPTIONS" angegeben werden.

Referenzlink

Recommended Posts

Versuchen Sie, einen anderen Servlet-Container-Steg mit Docker zu verwenden
Versuchen Sie es mit einem DI-Container mit Laravel und Spring Boot
Verwenden von PlantUml mit Honkit [Docker]
Versuchen Sie Hello World mit einfachem Java im Docker-Container
Probieren Sie Redmine auf dem Mac Docker aus
Versuchen Sie, den Cloudera Manager mit Docker auszuführen
Versuchen Sie, recaptcha mit eingebettetem Jetty zu implementieren.
Versuchen Sie es mit Redis mit Java (jar)
[Linux] Starten Sie den Apache-Container mit Docker
Verwenden von cuda11.0 mit pytorch mit Docker
Überprüfen Sie den Betrieb mit dem Steg mit Maven.
Ich habe versucht, Scalar DL mit Docker zu verwenden
Versuchen Sie es mit Spring Boot mit VS-Code
Proxyserver durch Tintenfisch mit Docker-Image
Erstellen Sie in Eile ein Maven-Projekt mit dem Docker-Container von Maven
GPU-Erkennung mit Docker mithilfe von WSL2 (August 2020)
Versuchen Sie es mit der Wii-Fernbedienung in Java
Lassen Sie einen Docker-Container laufen, ohne dass residente Prozesse ausgeführt werden
Erstellen Sie eine Kotlin-App mit dem OpenJDK Docker-Container
Versuchen Sie es mit einem GPS-Empfänger-Kit mit Raspberry Pi 3 (Ruby).
Einstellung zum Verlassen des Docker-Containers mit VScode
Probieren Sie RESTful Web Services mit dem Container-Archetyp von Nablarch aus
Aktualisieren Sie das Container-Image mit KUSANAGI Runs on Docker
Versuchen Sie, Express + PostgreSQL + Sequelize mit Docker zu erstellen [Teil 1]
Docker Container Operations mit Docker-Client API für Java
Versuchen Sie, S3Proxy mit Microsoft Azure Blob Storage zu verwenden
Versuchen Sie es mit libGDX
Versuchen Sie es mit Maven
Versuchen Sie es mit powermock-mockito2-2.0.2
Versuchen Sie es mit GraalVM
Versuchen Sie es mit jmockit 1.48
[Docker] Wie man mit einem Container in Heroku aktualisiert und wie man mit Migrate Error umgeht
Versuchen Sie es mit SwiftLint
Versuchen Sie es mit Log4j 2.0
Kleiner Docker Container
Bis ich versuche, Apache Kafka mit Docker-Image auszuführen
Versuchen Sie, OpenID Connect mit Keycloak (Spring Boot-Anwendung) zu verwenden.
Greifen Sie mit ssh auf den Circle CI Docker-Container zu und debuggen Sie ihn
Versuchen Sie, mit Java eine Verbindung zu AzureCosmosDB Emulator for Docker herzustellen
Führen Sie Mosquitto mit Docker aus und versuchen Sie die WebSocket-Kommunikation mit MQTT
Versuchen Sie, mit Docker eine Java-Entwicklungsumgebung zu erstellen
Befehl, um Docker vorerst zu verwenden
Versuchen Sie, mit Keycloak mit Spring Security SAML (Spring 5) zu arbeiten.