[JAVA] Essayez d'utiliser un autre conteneur de servlet Jetty avec Docker

Eclipse Jetty est un environnement d'exécution de servlet Java (conteneur de serviteur, implémentation partielle de Java EE) et un serveur Web. Apache Tomcat est une implémentation bien connue du conteneur de servlet, mais Jetty est plus ancien [^ 1] et plus léger [^ 2]. Le support commercial est fourni par le contributeur actif Webtide et intégré à Apache Hadoop. / Jetty) ou utilisé par Google App Engine.

[^ 1]: Jetty est sorti pour la première fois en 1995 et Tomcat est sorti pour la première fois en 1999.

Jetty a une empreinte mémoire plus petite que Tomcat, ce qui permet d'économiser des ressources lors de l'exécution de servlets Java dans un environnement virtualisé en conteneur. Cet article présente la procédure d'utilisation de cette Jetty sur Docker.

Utiliser Jetty avec Docker

Image officielle Docker est fournie [^ 3]. Vous pouvez choisir une image parmi une combinaison d'OpenJDK LTS (version Red Hat) et de JRE, Debian et Debian slim pour chaque version de Jetty.

version Développeur Java Java EE Servlet JSP Période de support Statut Remarques
11 Eclipse 11~ 8 4.0.2 2.3 2020~ alpha Changé en espace de noms JakartaEE
10 Eclipse 11~ 8 4.0.2 2.3 2019~ bêta
9.4 Eclipse 1.8~ 7 3.1 2.3 2016~ version stable
9.3 Eclipse 1.8~ 7 3.1 2.3 2015~ non recommandé HTTP/2, prend en charge Fast CGI
9.2 Eclipse 1.7~ 7 3.1 2.3 2014~2018 EOL La distribution d'images Docker a commencé
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 Prend en charge WebSocket et 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 Antique
4 Sourceforge 1.2、J2ME 1.3 2.3 1.2 2001~2006 Ancien
3 Sourceforge 1.2 1.2 2.2 1.1 1999~2002 Fossilisé HTTP/1.Soutien 1
2 Mortbay 1.1 - 2.1 1 1998~2000 Légendaire
1 Mortbay 1 - - - 1995~1998 Mythique

Ici, nous sélectionnons Jetty9 sur OpenJDK11 sur Debian10:

[^ 3]: À propos, Google Cloud Platform Jetty Docker Image est également publié sous licence Apache-2.0.

docker pull jetty:9.4.31-jdk11

Le déploiement du servlet est facile, il suffit de mettre le fichier WAR ou le répertoire du servlet non compressé dans / var / lib / jetty / webapps:

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

Vous pouvez également spécifier n'importe quel emplacement dans context.xml:

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>

Cadre environnemental

Vous pouvez voir les préférences actuelles en spécifiant l'option --list-config:

$ 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

Veuillez vous référer au Document officiel pour les éléments qui peuvent être définis.

L'option JVM peut être spécifiée avec la variable d'environnement JAVA_OPTIONS.

Lien de référence

Recommended Posts

Essayez d'utiliser un autre conteneur de servlet Jetty avec Docker
Essayez d'utiliser un conteneur DI avec Laravel et Spring Boot
Utilisation de PlantUml avec Honkit [Docker]
Essayez Hello World en utilisant Java brut sur le conteneur Docker
Essayez Redmine sur le docker Mac
Essayez d'exécuter cloudera manager avec docker
Essayez d'implémenter recaptcha avec Jetty intégré.
Essayez d'utiliser Redis avec Java (jar)
[Linux] Démarrer le conteneur Apache avec Docker
Utilisation de cuda11.0 avec pytorch en utilisant Docker
Vérifiez le fonctionnement à l'aide de la jetée avec Maven.
J'ai essayé d'utiliser Scalar DL avec Docker
Essayez d'utiliser Spring Boot avec VS Code
Serveur proxy par squid en utilisant l'image docker
Créez un projet Maven à la hâte à l'aide du conteneur Docker de Maven
Reconnaissance GPU avec docker utilisant WSL2 (août 2020)
Essayez d'utiliser la télécommande Wii en Java
Garder un conteneur Docker en cours d'exécution sans aucun processus résident en cours d'exécution
Créer une application Kotlin à l'aide du conteneur OpenJDK Docker
Essayez d'utiliser le kit de récepteur GPS avec Raspberry Pi 3 (Ruby)
Paramètre pour quitter le conteneur Docker avec VScode
Essayez les services Web RESTful avec l'archétype de conteneur de Nablarch
Mettre à jour l'image du conteneur avec KUSANAGI s'exécute sur Docker
Essayez de créer Express + PostgreSQL + Sequelize avec Docker [Partie 1]
Opérations de conteneur Docker avec l'API Docker-Client pour Java
Essayez d'utiliser S3Proxy avec Microsoft Azure Blob Storage
Essayez d'utiliser libGDX
Essayez d'utiliser Maven
Essayez d'utiliser powermock-mockito2-2.0.2
Essayez d'utiliser GraalVM
Essayez d'utiliser jmockit 1.48
[Docker] Comment mettre à jour à l'aide d'un conteneur dans Heroku et comment gérer l'erreur de migration
Essayez d'utiliser SwiftLint
Essayez d'utiliser Log4j 2.0
Petit conteneur Docker
Jusqu'à ce que j'essaye d'exécuter Apache Kafka avec une image docker
Essayez d'utiliser OpenID Connect avec Keycloak (application Spring Boot)
Accéder et déboguer le conteneur Docker Circle CI avec ssh
Essayez de vous connecter à l'émulateur AzureCosmosDB pour Docker avec Java
Exécutez Mosquitto avec Docker et essayez la communication WebSocket avec MQTT
Essayez de créer un environnement de développement Java à l'aide de Docker
Commande pour essayer d'utiliser Docker pour le moment
Essayez de travailler avec Keycloak en utilisant Spring Security SAML (Spring 5)