Ceci est mon premier code Spring Boot. Malheureusement, il s'arrête toujours. Je m'attendais à ce qu'il fonctionne en continu afin que mon client Web puisse obtenir des données du navigateur.
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
S'il vous plaît donnez votre avis.
Merci
PS build.gradle est la faute.
dependencies {
// tag::jetty[]
compile("org.springframework.boot:spring-boot-starter-web") {
**exclude module: "spring-boot-starter-tomcat"**
}
Une fois que j'ai enlevé la ligne ci-dessus en gras, tout fonctionne. Mon contexte d'application est maintenant correct. Merci 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
la source
la source
ApplicationContext
est incorrect (AnnotationConfigApplicationContext
), ce n'est donc pas une application Web. Il doit être défini par défaut sur une valeur qui dépend de votre chemin de classe, il semble donc que ce soit défini ou défini par défaut dans le mauvais sens. Peut-être avez-vous uneapplication.properties
ou une variable ENV que vous ne montrez pas?--debug
sur la ligne de commande et publier les journaux ici, s'il vous plaît?Réponses:
Résolution: l'application n'est pas une webapp car elle n'a pas de conteneur intégré (par exemple Tomcat) sur le chemin de classe. L'ajout d'un l'a corrigé. Si vous utilisez Maven , ajoutez ceci dans
pom.xml
:Pour Gradle (
build.gradle
), cela ressemble àla source
Voici comment vous pouvez y remédier:
Vérifiez si vous n'avez pas de dépendance sur spring-boot-starter-web dans votre fichier pom.xml. Pour obtenir le bon fichier pom.xml, utilisez ce lien start.spring.io
Si vous avez une dépendance ci-dessus, mais que vous êtes toujours confronté au problème, il est fort possible que vos jars tomcat intégrés soient présents. Pour confirmer cela, exécutez maven build en mode débogage -
et recherchez des messages comme -
Si de tels messages sont présents, purgez votre référentiel maven local et réessayez -
la source
J'ai eu le même problème mais quand j'ai supprimé
il a recommencé à fonctionner.
la source
Peut-être que cela ne correspond pas à votre code, mais j'ai découvert si vous avez un extrait de code comme celui-ci:
puis supprimez simplement la méthode close (). Cela a résolu mon problème! Peut-être que je peux aider quelqu'un avec ça
la source
Dans mon cas, le problème a été introduit lorsque j'ai corrigé une erreur d'analyse statique indiquant que la valeur de retour d'une méthode n'était pas utilisée.
L'ancien code de travail dans mon Application.java était:
Le nouveau code qui a introduit le problème était:
Évidemment, le bloc try with resource fermera le contexte après le démarrage de l'application, ce qui entraînera la fermeture de l'application avec le statut 0. Il s'agissait d'un cas où l'erreur de fuite de ressources signalée par l'analyse statique snarqube devait être ignorée.
la source
Avec gradle, j'ai remplacé cette ligne dans le fichier build.gradle.kts à l'intérieur du bloc de dépendances
avec ça
et fonctionne très bien.
la source
Je pense que la bonne réponse était à Pourquoi l'application Web Spring Boot se ferme-t-elle immédiatement après le démarrage? à propos du starter-tomcat n'étant pas défini et s'il est défini et exécuté via l'EDI, la portée fournie doit être commentée. Scope ne crée pas de problème lors de l'exécution de la commande. Je me demande pourquoi.
Quoi qu'il en soit, je viens d'ajouter mes pensées supplémentaires.
la source
Juste une autre possibilité,
j'ai remplacé
avec
et ça a commencé sans aucun problème
la source
ce travail avec spring boot 2.0.0
remplacer
avec
la source
Dans mon cas, j'ai résolu ce problème comme ci-dessous: -
J'ai d'abord supprimé (apache)
C:\Users\myuserId\.m2\repository\org\apache
J'ai ajouté ci-dessous les dépendances dans mon
pom.xml
fichierJ'ai changé la socket par défaut en ajoutant des lignes ci-dessous dans le fichier de ressources
..\yourprojectfolder\src\main\resourcesand\application.properties
(j'ai créé manuellement ce fichier)pour cela, j'ai ajouté le bloc ci-dessous dans ma section
pom.xml
sous<build>
.Mon
pom.xml
fichier final ressemble àla source
Si vous ne voulez pas faire de votre printemps une application Web, ajoutez simplement
@EnableAsync
ou@EnableScheduling
à votre Starterla source
dans mon cas, j'avais déjà la dépendance maven à 'spring-boot-starter-web' et le projet démarrerait correctement sans s'arrêter automatiquement lorsque je l'exécutais en tant qu'application springboot à partir de l'EDI . cependant, lorsque je le déploie sur K8 , l'application démarre et s'arrête automatiquement immédiatement. J'ai donc modifié ma classe d'application principale pour étendre SpringBootServletInitializer et cela semble avoir corrigé l'arrêt automatique.
la source