Configure el servidor Jetty incorporado en Spring Boot

En este tutorial rápido, configuraremos el servidor Jetty incorporado reemplazándolo con el servidor Tomcat predeterminado en la aplicación web Spring Boot.

Índice
  1. Agregar una dependencia de muelle
  2. Agregar configuración Spring Boot Jetty

Agregar una dependencia de muelle

Tenemos que hacer dos cosas aquí: -

  1. Excluir dependencia por defecto spring-boot-starter-tomcat añadido en spring-boot-start-web
  2. Agregar spring-boot-starter-jetty adiccion.
pom.xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

construir.gradle
dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web') {
        exclude group: 'org.springframework.boot', module:'spring-boot-starter-tomcat'
    }
    implementation 'org.springframework.boot:spring-boot-starter-jetty'
}

Eso es. Reemplazó Tomcat con Jetty Server.

Cuando crea un proyecto Spring Boot Maven, reemplaza inteligentemente los archivos jar de Tomcat con archivos jar descartados de dependencia de Maven de la siguiente manera:

▼ Maven Dependencies
  ► tomcat-embed-core-x.y.z.jartomcat-embed-el-x.y.z.jartomcat-embed-websocket-x.y.z.jar
  ► jetty.servlets-x.y.z.jar
  ► jetty.continuation-x.y.z.jar
  ► jetty-http-x.y.z.jar
  ► jetty-webapp-x.y.z.jar
  ► jetty-servlet-x.y.z.jar
  ► jetty-security-x.y.z.jar
  ► jetty-server-x.y.z.jar

Registros de inicio de la aplicación

Cuando inicie la aplicación Spring Boot, verá en los registros que Jetty está sirviendo su aplicación web ahora:

INFO c.e.demo.SpringBootDemoApplication       :  Starting SpringBootDemoApplication using Java 11.0.10 on Ashishs-MBP with PID 4221 (/Users/ashl/IdeaProjects/springboot-examples/springboot-config/build/classes/java/main started by ashl in /Users/ashl/IdeaProjects/springboot-examples/springboot-config)
DEBUG c.e.demo.SpringBootDemoApplication      :  Running with Spring Boot v2.5.0, Spring v5.3.7
INFO c.e.demo.SpringBootDemoApplication       :  No active profile set, falling back to default profiles: default
INFO org.eclipse.jetty.util.log               :  Logging initialized @1343ms to org.eclipse.jetty.util.log.Slf4jLog
INFO o.s.b.w.e.j.JettyServletWebServerFactory :  Server initialized with port: 8080
INFO org.eclipse.jetty.server.Server          :  jetty-9.4.41.v20210516; built: 2021-05-16T23:56:28.993Z; git: 98607f93c7833e7dc59489b13f3cb0a114fb9f4c; jvm 11.0.10+8-LTS-162
INFO o.e.j.s.h.ContextHandler.application     :  Initializing Spring embedded WebApplicationContext
INFO w.s.c.ServletWebServerApplicationContext :  Root WebApplicationContext: initialization completed in 708 ms
INFO o.e.jetty.server.handler.ContextHandler  :  Started o.s.b.w.e.j.JettyEmbeddedWebAppContext@49469ffa{application,/,[file:///private/var/folders/6p/3ztts6bd4xbdl7nkcq6lpcg80000gn/T/jetty-docbase.8080.2111859430883013110/, jar:file:/Users/ashl/.gradle/caches/modules-2/files-2.1/org.webjars/swagger-ui/3.49.0/e126393ccbab7950fb618b7662fb37f71cb20841/swagger-ui-3.49.0.jar!/META-INF/resources],AVAILABLE}
INFO org.eclipse.jetty.server.Server          :  Started @1597ms
INFO o.e.j.s.h.ContextHandler.application     :  Initializing Spring DispatcherServlet 'dispatcherServlet'
INFO o.s.web.servlet.DispatcherServlet        :  Initializing Servlet 'dispatcherServlet'
INFO o.s.web.servlet.DispatcherServlet        :  Completed initialization in 1 ms
INFO o.e.jetty.server.AbstractConnector       :  Started ServerConnector@712cfb63{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
INFO o.s.b.web.embedded.jetty.JettyWebServer  :  Jetty started on port(s) 8080 (http/1.1) with context path '/'
INFO c.e.demo.SpringBootDemoApplication       :  Started SpringBootDemoApplication in 1.813 seconds (JVM running for 2.131)

Agregar configuración Spring Boot Jetty

Spring Boot también proporciona una configuración específica del servidor Jetty que puede configurar desde application.yml Donde application.properties expediente.

aplicación.yml
server:
  jetty:
    connection-idle-timeout: # Time that the connection can be idle before it is closed.
    max-http-form-post-size: # Maximum size of the form content in any HTTP post request e.g. 200000B
    accesslog:
      enabled: # Enable access log e.g. true
      append: # Enable append to log e.g. true
      custom-format: # Custom log format
      file-date-format: # Date format to place in log file name
      filename: # Log file name, if not specified, logs redirect to "System.err"
      format: # Log format e.g ncsa
      ignore-paths: # Request paths that should not be logged
      retention-period: # Number of days before rotated log files are deleted e.g. 31
    threads:
      acceptors: # Number of acceptor threads to use. When the value is -1, the default, the number of acceptors is derived from the operating environment.
      selectors: # Number of selector threads to use. When the value is -1, the default, the number of selectors is derived from the operating environment.
      min: # Minimum number of threads e.g. 8 
      max: # Maximum number of threads e.g. 200
      max-queue-capacity: # Maximum capacity of the thread pool's backing queue. A default is computed based on the threading configuration.
      idle-timeout: # Maximum thread idle time in millisecond e.g. 60000ms      

Puede consultar la documentación oficial de Spring Boot para obtener la lista de configuración completa.

Si quieres conocer otros artículos parecidos a Configure el servidor Jetty incorporado en Spring Boot puedes visitar la categoría Tutoriales.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas