Este é o meu primeiro código de inicialização da primavera. Infelizmente, sempre é desligado. Eu esperava que funcionasse continuamente, para que meu cliente da Web pudesse obter alguns dados do 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 informar.
obrigado
PS build.gradle é a falha.
dependencies {
// tag::jetty[]
compile("org.springframework.boot:spring-boot-starter-web") {
**exclude module: "spring-boot-starter-tomcat"**
}
Uma vez que tirei a linha acima em negrito, tudo funciona. O contexto do meu aplicativo agora está correto. Graças 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
fonte
fonte
ApplicationContext
é do tipo errado (AnnotationConfigApplicationContext
), portanto não é um aplicativo da web. Ele deve ter como padrão um valor que depende do seu caminho de classe; portanto, parece que ele está sendo definido ou padronizado da maneira errada. Talvez você tenha umaapplication.properties
var ou ENV que não está mostrando?--debug
na linha de comando e postar os logs aqui, por favor?Respostas:
Resolução: o aplicativo não é um aplicativo da Web porque não possui um contêiner incorporado (por exemplo, Tomcat) no caminho de classe. Adicionando um corrigido. Se você estiver usando o Maven , adicione-o em
pom.xml
:Para Gradle (
build.gradle
), parecefonte
Aqui está como você pode corrigi-lo:
Verifique se você não tem dependência do spring-boot-starter-web no seu arquivo pom.xml. Para corrigir o arquivo pom.xml, use este link start.spring.io
Se você tem dependência acima, mas ainda enfrenta o problema, é altamente possível que seus jars tomcat incorporados estejam presentes. Para confirmar isso, execute o maven build no modo de depuração -
e procure mensagens como -
Se essas mensagens estiverem presentes, limpe seu repositório de inventário local e tente novamente -
fonte
Eu tive o mesmo problema, mas quando removi
começou a funcionar novamente.
fonte
Talvez não se ajuste ao seu código, mas descobri se você tem um trecho de código como este:
em seguida, remova o método close (). Corrigido o meu problema! Talvez eu possa ajudar alguém com isso
fonte
No meu caso, o problema foi introduzido quando corrigi um erro de análise estática de que o valor de retorno de um método não era usado.
O código de trabalho antigo no meu Application.java era:
O novo código que introduziu o problema foi:
Obviamente, a tentativa com o bloco de recursos fechará o contexto após iniciar o aplicativo, o que resultará na saída do aplicativo com o status 0. Este foi um caso em que o erro de vazamento de recurso relatado pela análise estática do snarqube deve ser ignorado.
fonte
Com gradle, substituí esta linha no arquivo build.gradle.kts dentro do bloco de dependências
com isso
e funciona bem.
fonte
Acho que a resposta certa foi: Por que o aplicativo Web Spring Boot fecha imediatamente após o início? sobre o fato de o starter-tomcat não estar definido e, se configurado e executando através do IDE, o escopo fornecido deve ser comentado. O escopo não cria um problema ao executar o comando. Eu quero saber porque.
Enfim, apenas adicionei meus pensamentos adicionais.
fonte
Apenas outra possibilidade,
Eu troquei
com
e começou sem problemas
fonte
este trabalho com boot de primavera 2.0.0
substituir
com
fonte
No meu caso, eu corrigi esse problema como abaixo: -
Primeiro eu removi (apache)
C:\Users\myuserId\.m2\repository\org\apache
Eu adicionei abaixo dependências no meu
pom.xml
arquivoAlterei o soquete padrão adicionando linhas abaixo no arquivo de recursos
..\yourprojectfolder\src\main\resourcesand\application.properties
(eu criei este arquivo manualmente)por isso adicionei abaixo o bloco na minha seção
pom.xml
inferior<build>
.Meu
pom.xml
arquivo final parecefonte
Se você não quiser tornar sua primavera um aplicativo da web, basta adicionar
@EnableAsync
ou@EnableScheduling
ao seu Starterfonte
no meu caso, eu já tinha a dependência maven de 'spring-boot-starter-web' e o projeto começaria bem sem parar automaticamente quando eu o executava como aplicativo springboot no IDE . no entanto, quando eu o implanto no K8s , o aplicativo inicia e pára automaticamente imediatamente. Então, modifiquei minha classe principal do aplicativo para estender o SpringBootServletInitializer e isso parece ter corrigido a parada automática.
fonte