Este es mi primer código Spring Boot. Desafortunadamente, siempre se apaga. Esperaba que se ejecute continuamente para que mi cliente web pueda obtener algunos datos del navegador.
package hello;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
[@localhost initial]$ java -jar build/libs/gs-spring-boot-0.1.0.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.0.0.RC4)
2014-03-13 09:20:24.805 INFO 14650 --- [ main] hello.SampleController : Starting SampleController on localhost.localdomain with PID 14650 (/home/xxx/dev/gs-spring-boot/initial/build/libs/gs-spring-boot-0.1.0.jar started by xxx)
2014-03-13 09:20:25.002 INFO 14650 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@b9eec: startup date [Thu Mar 13 09:20:24 EDT 2014]; root of context hierarchy
2014-03-13 09:20:28.833 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Registering beans for JMX exposure on startup
2014-03-13 09:20:30.148 INFO 14650 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 0
2014-03-13 09:20:30.154 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'requestMappingEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=requestMappingEndpoint]
2014-03-13 09:20:30.316 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'environmentEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=environmentEndpoint]
2014-03-13 09:20:30.335 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'healthEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=healthEndpoint]
2014-03-13 09:20:30.351 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'beansEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=beansEndpoint]
2014-03-13 09:20:30.376 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'infoEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=infoEndpoint]
2014-03-13 09:20:30.400 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'metricsEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=metricsEndpoint]
2014-03-13 09:20:30.413 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'traceEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=traceEndpoint]
2014-03-13 09:20:30.428 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'dumpEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=dumpEndpoint]
2014-03-13 09:20:30.450 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'autoConfigurationAuditEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=autoConfigurationAuditEndpoint]
2014-03-13 09:20:30.465 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'shutdownEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=shutdownEndpoint]
2014-03-13 09:20:30.548 INFO 14650 --- [ main] o.s.b.a.e.jmx.EndpointMBeanExporter : Located managed bean 'configurationPropertiesReportEndpoint': registering with JMX server as MBean [org.springframework.boot:type=Endpoint,name=configurationPropertiesReportEndpoint]
2014-03-13 09:20:30.589 INFO 14650 --- [ main] hello.SampleController : Started SampleController in 7.396 seconds (JVM running for 9.569)
2014-03-13 09:20:30.608 INFO 14650 --- [ Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@b9eec: startup date [Thu Mar 13 09:20:24 EDT 2014]; root of context hierarchy
2014-03-13 09:20:30.610 INFO 14650 --- [ Thread-2] o.s.c.support.DefaultLifecycleProcessor : Stopping beans in phase 0
2014-03-13 09:20:30.624 INFO 14650 --- [ Thread-2] o.s.b.a.e.jmx.EndpointMBeanExporter : Unregistering JMX-exposed beans on shutdown
Por favor avise.
Gracias
PS build.gradle es la culpa.
dependencies {
// tag::jetty[]
compile("org.springframework.boot:spring-boot-starter-web") {
**exclude module: "spring-boot-starter-tomcat"**
}
Una vez que quité la línea anterior en negrita, todo funciona. El contexto de mi aplicación ahora es correcto. Gracias Dave
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.0.0.RC4)
2014-03-13 13:58:08.965 INFO 7307 --- [ main] hello.Application : Starting
Application on with PID 7307 (/ladev/home/xxx/dev/gs-spring-boot/initial/build/libs/gs-spring-boo
t-0.1.0.jar started by xxx)
2014-03-13 13:58:09.021 INFO 7307 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshi
ng org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@45490eb5: startup
date [Thu Mar 13 13:58:09 MDT 2014]; root of context hierarchy
2014-03-13 13:58:09.653 INFO 7307 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overridi
ng bean definition for bean 'beanNameViewResolver': replacing [Root bean: class [null]; scope=; abstract=fal
se; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanNam
e=org.springframework.boot.actuate.autoconfigure.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration;
factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class
path resource [org/springframework/boot/actuate/autoconfigure/ErrorMvcAutoConfiguration$WhitelabelErrorView
Configuration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3;
dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconf
igure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; in
itMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/au
toconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]]
java
spring
spring-boot
johnsam
fuente
fuente
ApplicationContext
es del tipo incorrecto (AnnotationConfigApplicationContext
), por lo que no es una aplicación web. Debe tener un valor predeterminado que depende de su classpath, por lo que parece que se está configurando o predeterminado de la manera incorrecta. ¿Quizás tienes unaapplication.properties
o una ENV var que no estás mostrando?--debug
en la línea de comandos y publicar los registros aquí, por favor?Respuestas:
Resolución: la aplicación no es una aplicación web porque no tiene un contenedor incrustado (por ejemplo, Tomcat) en el classpath. Agregar uno lo arregló. Si está utilizando Maven , agregue esto en
pom.xml
:Para Gradle (
build.gradle
) parece quefuente
Aquí es cómo puedes solucionarlo:
Compruebe si no tiene dependencia de spring-boot-starter-web en su archivo pom.xml. Para obtener el archivo pom.xml correcto, use este enlace start.spring.io
Si tiene una dependencia superior, pero aún enfrenta el problema, es muy posible que sus tarros tomcat incrustados estén presentes. Para confirmar esto, ejecute Maven Build en modo de depuración -
y busca mensajes como:
Si tales mensajes están presentes, purgue su repositorio local de Maven e intente nuevamente:
fuente
Tuve el mismo problema pero cuando eliminé
comenzó a funcionar de nuevo.
fuente
Tal vez no se ajuste a su código, pero descubrí si tiene un fragmento de código como este:
luego simplemente elimine el método close (). Eso solucionó mi problema! Tal vez pueda ayudar a alguien con eso
fuente
En mi caso, el problema se introdujo cuando solucioné un error de análisis estático de que no se usaba el valor de retorno de un método.
El antiguo código de trabajo en mi Application.java era:
El nuevo código que introdujo el problema fue:
Obviamente, el intento con el bloque de recursos cerrará el contexto después de iniciar la aplicación, lo que hará que la aplicación salga con el estado 0. Este fue un caso en el que el error de pérdida de recursos informado por el análisis estático snarqube debe ignorarse.
fuente
Con gradle, reemplacé esta línea en el archivo build.gradle.kts dentro del bloque de dependencias
con este
y funciona bien
fuente
Creo que la respuesta correcta fue en ¿Por qué la aplicación web Spring Boot se cierra inmediatamente después de comenzar? sobre el starter-tomcat no se establece y si se establece y ejecuta a través del IDE, el alcance proporcionado debe comentarse. El alcance no crea un problema mientras se ejecuta a través del comando. Me pregunto porque.
De todos modos acabo de agregar mis pensamientos adicionales.
fuente
Solo otra posibilidad,
Reemplacé
con
y comenzó sin problemas
fuente
este trabajo con spring boot 2.0.0
reemplazar
con
fuente
En mi caso solucioné este problema como a continuación:
Primero quité (apache)
C:\Users\myuserId\.m2\repository\org\apache
Agregué las siguientes dependencias en mi
pom.xml
archivoHe cambiado el socket predeterminado agregando las siguientes líneas en el archivo de recursos
..\yourprojectfolder\src\main\resourcesand\application.properties
(creé este archivo manualmente)para eso he agregado debajo del bloque en mi sección
pom.xml
inferior<build>
.Mi
pom.xml
archivo final parecefuente
Si no desea que su Spring sea una aplicación web, simplemente agregue
@EnableAsync
o@EnableScheduling
a su Starterfuente
en mi caso ya tenía la dependencia maven de 'spring-boot-starter-web' y el proyecto comenzaría bien sin detenerse automáticamente cuando lo ejecuto como aplicación springboot desde el IDE . sin embargo, cuando lo implemento en K8 , la aplicación se iniciará y se detendrá automáticamente de inmediato. Así que modifiqué mi clase de aplicación principal para extender SpringBootServletInitializer y esto parece haber solucionado la detención automática.
fuente