Tengo una aplicación Spring Boot simple que recibe mensajes de una cola JMS y guarda algunos datos en un archivo de registro, pero no necesita un servidor web. ¿Hay alguna forma de iniciar Spring Boot sin el servidor web?
java
spring-boot
Miguel
fuente
fuente
spring-jms
(supongo) como una dependencia. Luego, simplemente inicie la aplicación, no se iniciará ningún servidor.Respuestas:
Spring boot no incluirá tomcat incrustado si no tiene dependencias de Tomcat en la ruta de clase. Puede ver este hecho usted mismo en la clase
EmbeddedServletContainerAutoConfiguration
cuya fuente puede encontrar aquí .La esencia del código es el uso de la
@ConditionalOnClass
anotación en la clase.EmbeddedTomcat
Además, para obtener más información, consulte esta y esta guía y esta parte de la documentación.
fuente
gs-convert-jar-to-war/complete
proyecto de Maven no añadir un servidor Tomcat incluido, a pesar de laspring-boot-starter-tomcat
dependencia declarada de alcanceprovided
. Esto se siente como un error. También vea stackoverflow.com/q/25991789/923560Si desea ejecutar Spring Boot sin un contenedor de servlet, pero con uno en la ruta de clases (por ejemplo, para pruebas), use lo siguiente, como se describe en la documentación de Spring Boot :
Además, me encontré con esta propiedad:
fuente
application.properties
funciona perfectamente bien.spring.main.web-environment
ahora está en desuso. Todavía funciona para Boot 2.1.1spring.main.web-application-type=none
Spring Boot 2.x
Propiedades de la aplicación
o SpringApplicationBuilder
Donde WebApplicationType :
fuente
Puedes crear algo como esto:
Y
Sin embargo, la dependencia sigue ahí, pero no se utiliza.
fuente
La solucion mas sencilla. en su archivo application.properties. agregue la siguiente propiedad como se menciona en una respuesta anterior:
Para la versión 2.0.0 de Spring boot starter, use la siguiente propiedad:
Para obtener documentación sobre todas las propiedades, use este enlace: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
fuente
Para Spring boot v2.1.3.RELEASE, simplemente agregue las siguientes propiedades en application.propertes:
fuente
Utilice este código.
fuente
Si necesita funcionalidad web en su aplicación (como
org.springframework.web.client.RestTemplate
para las llamadas REST) pero no desea iniciar un servidor TOMCAT, simplemente exclúyalo en el POM:fuente
A través del programa:
A través del archivo application.properties:
A través del archivo application.yml:
fuente
Si desea utilizar una de las plantillas "Getting Started" del sitio spring.io, pero no necesita ninguna de las cosas relacionadas con el servlet que vienen con la plantilla "predeterminada" ("gs / spring-boot"), puede probar la plantilla de tareas de programación (cuyo pom * contiene spring-boot-starter, etc.) en su lugar:
https://spring.io/guides/gs/scheduling-tasks/
Eso le brinda Spring Boot, y la aplicación se ejecuta de forma independiente (no se incluyen servlets o spring-webmvc, etc. en el pom). Que es lo que quería (aunque es posible que deba agregar algunas cosas específicas de JMS, como alguien más ya señaló).
[* Estoy usando Maven, pero supongo que una compilación de Gradle funcionará de manera similar].
fuente
Eliminar la dependencia siguiente en su archivo pom funcionará para mí
fuente
Para Kotling, esto es lo que usé últimamente:
Y todo arranca normalmente terminando con un shell con mi comando personalizado disponible.
fuente
Puede usar la dependencia spring-boot-starter. Esto no tendrá el material web.
fuente
Similar a @nayun oh respuesta anterior, pero para versiones anteriores de Spring, use este código:
fuente