[JAVA] Hello World avec GlassFish 5.1 + Servlet + JSP

Aperçu

--Créer un fichier WAR avec Gradle contenant Java Servlet et JSP --Installez GlassFish 5.1.0 --Déployez le fichier WAR sur GlassFish 5.1.0

Qu'est-ce que GlassFish 5.1?

GlassFish 5.1 est un serveur d'applications Web compatible Jakarta EE 8 et Java EE 8. Il prend en charge Java Servlet 4.0 et JavaServer Pages 2.3.

Eclipse GlassFish

Eclipse GlassFish is a Jakarta EE compatible implementation sponsored by the Eclipse Foundation. Eclipse GlassFish 5.1 is also Java EE 8 Compatible.

Installez Java 8

Si Java 8 n'est pas installé, installez-le avec Homebrew etc. et définissez les variables d'environnement JAVA_HOME et PATH.

$ brew tap AdoptOpenJDK/openjdk

$ brew cask install adoptopenjdk8

$ /usr/libexec/java_home -v 1.8
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

$ export PATH=${JAVA_HOME}/bin:${PATH}

Notez que dans Java 11 et Java 14, l'erreur suivante se produit et Glassfish 5.1.0 ne démarre pas.

$ ./glassfish5/bin/asadmin start-domain
Exception in thread "main" java.lang.NullPointerException
	at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.initializeServiceLocator(AbstractModulesRegistryImpl.java:128)
	at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.newServiceLocator(AbstractModulesRegistryImpl.java:120)
	at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.createServiceLocator(AbstractModulesRegistryImpl.java:194)
	at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.createServiceLocator(AbstractModulesRegistryImpl.java:200)
	at com.sun.enterprise.module.single.StaticModulesRegistry.createServiceLocator(StaticModulesRegistry.java:64)
	at com.sun.enterprise.admin.cli.CLIContainer.getServiceLocator(CLIContainer.java:193)
	at com.sun.enterprise.admin.cli.CLIContainer.getLocalCommand(CLIContainer.java:231)
	at com.sun.enterprise.admin.cli.CLICommand.getCommand(CLICommand.java:207)
	at com.sun.enterprise.admin.cli.AdminMain.executeCommand(AdminMain.java:347)
	at com.sun.enterprise.admin.cli.AdminMain.doMain(AdminMain.java:282)
	at org.glassfish.admin.cli.AsadminMain.main(AsadminMain.java:33)

Créer un fichier WAR avec Gradle contenant Java Servlet et JSP

Liste des fichiers

├── build.gradle
└── src
    └── main
        ├── java
        │   └── com
        │       └── example
        │           └── MyServlet.java
        └── webapp
            ├── WEB-INF
            │   └── web.xml
            └── myjsp.jsp

build.gradle

plugins {
  id 'war'
}

repositories {
  mavenCentral()
}

dependencies {
  // Java Servlet 4.0 API
  // https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api
  providedCompile 'javax.servlet:javax.servlet-api:4.0.1'
}

// Java 8
sourceCompatibility = 1.8

// Application
version = '1.0'

src/main/java/com/example/MyServlet.java

package com.example;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/myservlet")
public class MyServlet extends HttpServlet {

  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
    res.setContentType("text/html; charset=utf-8");
    try (PrintWriter out = res.getWriter()) {
      out.println("<html><body>");
      out.println("Servlet: Hello Servlet World!<br>");
      out.println(getServletContext().getServerInfo());
      out.println("</body></html>");
    }
  }
}

src/main/webapp/myjsp.jsp

<%@ page contentType="text/html; charset=utf-8" %><html><body>
JSP: Hello JSP World!<br>
<%= pageContext.getServletContext().getServerInfo() %><br>
java.vm.name: <%= System.getProperty("java.vm.name") %><br>
java.vm.vendor: <%= System.getProperty("java.vm.vendor") %><br>
java.vm.version: <%= System.getProperty("java.vm.version") %><br>
</body></html>

src/main/webapp/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- Web Application Deployment Descriptor (Java Servlet 4.0) -->
<web-app
  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0">

  <servlet>
    <servlet-name>myjsp</servlet-name>
    <jsp-file>/myjsp.jsp</jsp-file>
  </servlet>

  <servlet-mapping>
    <servlet-name>myjsp</servlet-name>
    <url-pattern>/myjsp</url-pattern>
  </servlet-mapping>

</web-app>

Créer un fichier WAR

Créez un fichier WAR avec la tâche de génération Gradle.

$ gradle build

Assurez-vous que le fichier WAR est généré.

$ file build/libs/mywebapp-1.0.war 
build/libs/mywebapp-1.0.war: Zip archive data, at least v1.0 to extract

Installez GlassFish 5.1.0

Installez selon le manuel officiel Installation d'Eclipse GlassFish Server 5 \ .1.

Depuis Eclipse GlassFish \ | projects \ .eclipse \ .org glassfish-5.1.0.zip (Eclipse GlassFish 5.1.0, Profil complet) Télécharger.

Extrayez le fichier glassfish-5.1.0.zip téléchargé dans le répertoire d'installation.

$ unzip glassfish-5.1.0.zip

Téléchargez et décompressez simplement le fichier zip pour terminer l'installation.

Démarrer GlassFish

Démarrage rapide pour les fonctionnalités de base \ -Démarrage et arrêt du domaine par défaut Commencez selon.

$ ./glassfish5/bin/asadmin start-domain
Waiting for domain1 to start ......
Successfully started the domain : domain1
domain  Location: /Users/foo/glassfish5/glassfish/domains/domain1
Log File: /Users/foo/glassfish5/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.

Une fois démarré, vous pouvez gérer l'état de GlassFish dans la console d'administration http: // localhost: 4848 /.

Déployez le fichier WAR sur GlassFish 5.1.0

Il peut être déployé avec la commande asadmin deploy. Les détails de la commande peuvent être trouvés dans le manuel de référence deploy.

$ ./glassfish5/bin/asadmin deploy --contextroot=mywebappcr --name=mywebappname /Users/foo/mywebapp/build/libs/mywebapp-1.0.war
Application deployed with name mywebappname.
Command deploy executed successfully.

Le fichier WAR déployé est copié et développé dans le répertoire d'installation.

$ find . | grep mywebapp
./glassfish5/glassfish/domains/domain1/generated/xml/mywebappname
./glassfish5/glassfish/domains/domain1/generated/ejb/mywebappname
./glassfish5/glassfish/domains/domain1/generated/policy/mywebappname
./glassfish5/glassfish/domains/domain1/generated/policy/mywebappname/mywebappname
./glassfish5/glassfish/domains/domain1/generated/policy/mywebappname/mywebappname/granted.policy
./glassfish5/glassfish/domains/domain1/generated/jsp/mywebappname
./glassfish5/glassfish/domains/domain1/applications/mywebappname
./glassfish5/glassfish/domains/domain1/applications/mywebappname/myjsp.jsp
./glassfish5/glassfish/domains/domain1/applications/mywebappname/META-INF
./glassfish5/glassfish/domains/domain1/applications/mywebappname/META-INF/MANIFEST.MF
./glassfish5/glassfish/domains/domain1/applications/mywebappname/WEB-INF
./glassfish5/glassfish/domains/domain1/applications/mywebappname/WEB-INF/classes
./glassfish5/glassfish/domains/domain1/applications/mywebappname/WEB-INF/classes/com
./glassfish5/glassfish/domains/domain1/applications/mywebappname/WEB-INF/classes/com/example
./glassfish5/glassfish/domains/domain1/applications/mywebappname/WEB-INF/classes/com/example/MyServlet.class
./glassfish5/glassfish/domains/domain1/applications/mywebappname/WEB-INF/web.xml
./glassfish5/glassfish/domains/domain1/applications/__internal/mywebappname
./glassfish5/glassfish/domains/domain1/applications/__internal/mywebappname/mywebapp-1.0.war

Contrôle de fonctionnement

Vérifiez le fonctionnement de l'application Web déployée.

(Je suis un peu inquiet que Servlet / 3.1 soit sorti même s'il devrait être compatible avec Servlet 4.0)

$ curl --include http://localhost:8080/mywebappcr/myservlet
HTTP/1.1 200 OK
Server: GlassFish Server Open Source Edition  5.1.0 
X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition  5.1.0  Java/AdoptOpenJDK/1.8)
Content-Type: text/html;charset=utf-8
Content-Length: 118

<html><body>
Servlet: Hello Servlet World!<br>
GlassFish Server Open Source Edition  5.1.0 
</body></html>
$ curl --include http://localhost:8080/mywebappcr/myjsp
HTTP/1.1 200 OK
Server: GlassFish Server Open Source Edition  5.1.0 
X-Powered-By: JSP/2.3
Set-Cookie: JSESSIONID=0123456789abcdef0123456789ab; Path=/mywebappcr; HttpOnly
Content-Type: text/html;charset=utf-8
Content-Length: 230

<html><body>
JSP: Hello JSP World!<br>
GlassFish Server Open Source Edition  5.1.0 <br>
java.vm.name: OpenJDK 64-Bit Server VM<br>
java.vm.vendor: AdoptOpenJDK<br>
java.vm.version: 25.265-b01<br>
</body></html>

Annuler le déploiement de l'application Web

Vous pouvez supprimer l'application Web déployée avec la commande asadmin undeploy.

$ ./glassfish5/bin/asadmin undeploy mywebappname
Command undeploy executed successfully.

Arrêter GlassFish

Il peut être arrêté avec la commande asadmin stop-domain.

$ ./glassfish5/bin/asadmin stop-domain
Waiting for the domain to stop .
Command stop-domain executed successfully.

Matériel de référence

Recommended Posts

Hello World avec GlassFish 5.1 + Servlet + JSP
Hello World avec Micronaut
Exécutez JSP Hello World avec Tomcat sur Docker
Hello World avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Bonjour tout le monde avec VS Code!
Premiers pas avec JSP et servlet
Hello World avec Spring Boot
Hello World avec SpringBoot / Gradle
Bonjour tout le monde! Avec Asakusa Framework!
Hello World avec Java Servlet et JSP (démarrage facile du serveur Web avec Maven + Jetty)
Bonjour tout le monde avec Kotlin et JavaFX
Passer des paramètres de JSP avec un servlet
(Intellij) Hello World avec Spring Boot
Créez un PDF avec itext7 ~ HelloWorld ~
"Hello world" pour ImageJ avec Eclipse
Hello World avec GWT 2.8.2 et Maven
Hello World avec Eclipse + Spring Boot + Maven
Bonjour tout le monde avec le moteur de modèle Java Thymeleaf
Développement Java avec Codenvy: Hello World! Run
"Hello, World!" Avec Kotlin + CLI en 5 minutes
Bonjour tout le monde avec Kotlin et Tornado FX
Comment Spring Security fonctionne avec Hello World
(IntelliJ + gradle) Hello World avec Spring Boot
Lire "Hello world"
Java, bonjour le monde!
Java Hello World
Hello World avec JavaFX 11 (OpenJFX) de Liberica JDK 11
Bonjour tout le monde! Avec Spring Boot (Marven + éditeur de texte)
[Java] Hello World avec Java 14 x Spring Boot 2.3 x JUnit 5 ~
Afficher un simple Hello World avec SpringBoot + IntelliJ
Essayez d'afficher Hello World avec Spring + Gradle
Facile à afficher Hello World avec Rails + Docker
"Hello World" en Java
Hello World (API REST) avec Apache Camel + Spring Boot 2
Apprendre Java (1) - Hello World
À propos de [servlet] [JSP] [tomcat]
Lire System.out.println ("bonjour, monde")
Écrivons Hello World
Hello World en Java
Étudier Java-Partie 1-Hello World
Hello World avec Web Assembly
Hello World (application console) avec Apache Camel + Spring Boot 2
[Java] Un type d'alphabet interdit Avec reliure Bonjour tout le monde! [Reliure]
Hello World avec la bibliothèque d'extension Ruby pour le moment
Créez une application Web Hello World avec Spring Framework + Jetty
Jusqu'à ce que vous créiez une application Web avec Servlet / JSP (Partie 1)
[Vue Rails] "Hello Vue!" Affiché avec Vue + Rails
java bonjour le monde, compilez, exécutez
Dessin d'une vue Servlet / JSP Java
Affichage d'erreur JSP à partir du servlet
Les débutants en Java lisent Hello World
Comparaison du développement d'applications WEB avec Rails et Java Servlet + JSP
Créez une application mémo avec Tomcat + JSP + Servlet + MySQL à l'aide d'Eclipse
[Swift] Créez un projet avec Xcode (ver 12.1) et affichez "Hello, World!"
Jusqu'à ce que vous exécutiez Hello World of JavaFX avec VSCode + Gradle
Essayez HelloWorld avec la configuration minimale de Heroku Java spring-boot
Comparez Hello, world! Avec Spring Boot avec Java, Kotlin et Groovy
[Introduction à JSP + Servlet] J'ai joué avec pendant un moment ♬