Je peux démarrer Spring-Boot avec mvn spring-boot
avec succès, la documentation mentionne la possibilité de quitter gracieusement le hit d'application ctrl-c
.
Terminate batch job (Y/N)? Y
Le processus maven se termine mais Tomcat est toujours en cours d'exécution et je peux toujours accéder à la page Web. Lorsque j'essaie de redémarrer spring-boot, Tomcat ne parvient pas à démarrer car le port est utilisé.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.1.0.BUILD-SNAPSHOT)
2014-05-02 12:13:57.666 INFO 6568 --- [ main] Example : Starting Example on challenger with PID 6568 (E:\workspace\SpringBoot\target\cla
sses started by steven in E:\workspace\SpringBoot)
2014-05-02 12:13:57.707 INFO 6568 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWeb
ApplicationContext@11ecab7c: startup date [Fri May 02 12:13:57 EDT 2014]; root of context hierarchy
2014-05-02 12:13:58.097 INFO 6568 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'beanNameViewResolver': replacing [Root bean
: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfi
gure.web.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class pat
h resource [org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; laz
yInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAuto
ConfigurationAdapter; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfig
ure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]]
2014-05-02 12:13:58.682 INFO 6568 --- [ main] .t.TomcatEmbeddedServletContainerFactory : Server initialized with port: 8080
2014-05-02 12:13:58.892 INFO 6568 --- [ main] o.Apache.catalina.core.StandardService : Starting service Tomcat
2014-05-02 12:13:58.892 INFO 6568 --- [ main] org.Apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.53
2014-05-02 12:13:58.981 INFO 6568 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2014-05-02 12:13:58.981 INFO 6568 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1277 ms
2014-05-02 12:13:59.453 INFO 6568 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2014-05-02 12:13:59.455 INFO 6568 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2014-05-02 12:13:59.570 ERROR 6568 --- [ main] o.a.coyote.http11.Http11NioProtocol : Failed to start end point associated with ProtocolHandler ["http-nio-8080"]
Java.net.BindException: Address already in use: bind
at Sun.nio.ch.Net.bind0(Native Method)
at Sun.nio.ch.Net.bind(Net.Java:344)
at Sun.nio.ch.Net.bind(Net.Java:336)
at Sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.Java:199)
at Sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.Java:74)
at org.Apache.Tomcat.util.net.NioEndpoint.bind(NioEndpoint.Java:473)
at org.Apache.Tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.Java:647)
at org.Apache.coyote.AbstractProtocol.start(AbstractProtocol.Java:449)
at org.Apache.catalina.connector.Connector.startInternal(Connector.Java:1007)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
at org.Apache.catalina.core.StandardService.startInternal(StandardService.Java:459)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
at org.Apache.catalina.core.StandardServer.startInternal(StandardServer.Java:731)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
at org.Apache.catalina.startup.Tomcat.start(Tomcat.Java:341)
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.Java:79)
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.Java:69)
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.Java:270)
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.Java:145)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.Java:159)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:132)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:476)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.Java:120)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.Java:680)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:313)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:941)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:930)
at Example.main(Example.Java:16)
2014-05-02 12:13:59.571 ERROR 6568 --- [ main] o.Apache.catalina.core.StandardService : Failed to start connector [Connector[org.Apache.coyote.http11.Http11NioProtocol-
8080]]
org.Apache.catalina.LifecycleException: Failed to start component [Connector[org.Apache.coyote.http11.Http11NioProtocol-8080]]
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:154)
at org.Apache.catalina.core.StandardService.startInternal(StandardService.Java:459)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
at org.Apache.catalina.core.StandardServer.startInternal(StandardServer.Java:731)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
at org.Apache.catalina.startup.Tomcat.start(Tomcat.Java:341)
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.Java:79)
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.Java:69)
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.Java:270)
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.Java:145)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.Java:159)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:132)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:476)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.Java:120)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.Java:680)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:313)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:941)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:930)
at Example.main(Example.Java:16)
Caused by: org.Apache.catalina.LifecycleException: service.getName(): "Tomcat"; Protocol handler start failed
at org.Apache.catalina.connector.Connector.startInternal(Connector.Java:1014)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
... 18 common frames omitted
Caused by: Java.net.BindException: Address already in use: bind
at Sun.nio.ch.Net.bind0(Native Method)
at Sun.nio.ch.Net.bind(Net.Java:344)
at Sun.nio.ch.Net.bind(Net.Java:336)
at Sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.Java:199)
at Sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.Java:74)
at org.Apache.Tomcat.util.net.NioEndpoint.bind(NioEndpoint.Java:473)
at org.Apache.Tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.Java:647)
at org.Apache.coyote.AbstractProtocol.start(AbstractProtocol.Java:449)
at org.Apache.catalina.connector.Connector.startInternal(Connector.Java:1007)
... 19 common frames omitted
2014-05-02 12:13:59.572 INFO 6568 --- [ main] o.Apache.catalina.core.StandardService : Stopping service Tomcat
2014-05-02 12:13:59.580 INFO 6568 --- [ main] .b.l.ClasspathLoggingApplicationListener : Application failed to start with classpath: [file:/E:/workspace/SpringBoot/src/m
ain/resources, file:/E:/workspace/SpringBoot/src/main/resources, file:/E:/workspace/SpringBoot/target/classes/, file:/C:/Users/steven/.m2/repository/org/springframework/boot/spring
-boot-starter-web/1.1.0.BUILD-SNAPSHOT/spring-boot-starter-web-1.1.0.BUILD-SNAPSHOT.jar, file:/C:/Users/steven/.m2/repository/org/springframework/boot/spring-boot-starter/1.1.0.BUI
LD-SNAPSHOT/spring-boot-starter-1.1.0.BUILD-SNAPSHOT.jar, file:/C:/Users/steven/.m2/repository/org/springframework/boot/spring-boot/1.1.0.BUILD-SNAPSHOT/spring-boot-1.1.0.BUILD-SNA
PSHOT.jar, file:/C:/Users/steven/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.1.0.BUILD-SNAPSHOT/spring-boot-autoconfigure-1.1.0.BUILD-SNAPSHOT.jar, file:/C:
/Users/steven/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.1.0.BUILD-SNAPSHOT/spring-boot-starter-logging-1.1.0.BUILD-SNAPSHOT.jar, file:/C:/Users/steven/.
m2/repository/org/slf4j/jcl-over-slf4j/1.7.7/jcl-over-slf4j-1.7.7.jar, file:/C:/Users/steven/.m2/repository/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar, file:/C:/Users/steven/.m2
/repository/org/slf4j/jul-to-slf4j/1.7.7/jul-to-slf4j-1.7.7.jar, file:/C:/Users/steven/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.7/log4j-over-slf4j-1.7.7.jar, file:/C:/Users/st
even/.m2/repository/ch/qos/logback/logback-classic/1.1.2/logback-classic-1.1.2.jar, file:/C:/Users/steven/.m2/repository/ch/qos/logback/logback-core/1.1.2/logback-core-1.1.2.jar, f
ile:/C:/Users/steven/.m2/repository/org/yaml/snakeyaml/1.13/snakeyaml-1.13.jar, file:/C:/Users/steven/.m2/repository/org/springframework/boot/spring-boot-starter-Tomcat/1.1.0.BUILD
-SNAPSHOT/spring-boot-starter-Tomcat-1.1.0.BUILD-SNAPSHOT.jar, file:/C:/Users/steven/.m2/repository/org/Apache/Tomcat/embed/Tomcat-embed-core/7.0.53/Tomcat-embed-core-7.0.53.jar, f
ile:/C:/Users/steven/.m2/repository/org/Apache/Tomcat/embed/Tomcat-embed-el/7.0.53/Tomcat-embed-el-7.0.53.jar, file:/C:/Users/steven/.m2/repository/org/Apache/Tomcat/embed/Tomcat-e
mbed-logging-juli/7.0.53/Tomcat-embed-logging-juli-7.0.53.jar, file:/C:/Users/steven/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.3.3/jackson-databind-2.3.3.jar, fi
le:/C:/Users/steven/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.3.0/jackson-annotations-2.3.0.jar, file:/C:/Users/steven/.m2/repository/com/fasterxml/jackson/co
re/jackson-core/2.3.3/jackson-core-2.3.3.jar, file:/C:/Users/steven/.m2/repository/org/springframework/spring-web/4.0.3.RELEASE/spring-web-4.0.3.RELEASE.jar, file:/C:/Users/steven/
.m2/repository/org/springframework/spring-aop/4.0.3.RELEASE/spring-aop-4.0.3.RELEASE.jar, file:/C:/Users/steven/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar, file
:/C:/Users/steven/.m2/repository/org/springframework/spring-beans/4.0.3.RELEASE/spring-beans-4.0.3.RELEASE.jar, file:/C:/Users/steven/.m2/repository/org/springframework/spring-cont
ext/4.0.3.RELEASE/spring-context-4.0.3.RELEASE.jar, file:/C:/Users/steven/.m2/repository/org/springframework/spring-core/4.0.3.RELEASE/spring-core-4.0.3.RELEASE.jar, file:/C:/Users
/steven/.m2/repository/org/springframework/spring-webmvc/4.0.3.RELEASE/spring-webmvc-4.0.3.RELEASE.jar, file:/C:/Users/steven/.m2/repository/org/springframework/spring-expression/4
.0.3.RELEASE/spring-expression-4.0.3.RELEASE.jar]
Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedde
d.EmbeddedServletContainerException: Unable to start embedded Tomcat
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:135)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:476)
[INFO] ------------------------------------------------------------------------
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.Java:120)
[INFO] BUILD SUCCESS
at org.springframework.boot.SpringApplication.refresh(SpringApplication.Java:680)
[INFO] ------------------------------------------------------------------------
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:313)
[INFO] Total time: 4.653 s
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:941)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:930)
at Example.main(Example.Java:16)
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
[INFO] Finished at: 2014-05-02T12:13:59-05:00
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.Java:106)
[INFO] Final Memory: 16M/232M
[INFO] ------------------------------------------------------------------------
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.Java:69)
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.Java:270)
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.Java:145)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.Java:159)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.Java:132)
... 7 more
Caused by: Java.lang.IllegalStateException: Tomcat connector in failed state
at org.springframework.boot.context.embedded.Tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.Java:102)
... 12 more
Pour continuer, je dois terminer manuellement le processus en cours. Est-ce un bug ou est-ce que je manque quelque chose?
Il m’arrive encore à la version 1.1.9 sous Windows 7.
Ainsi, après avoir appuyé sur Ctrl C. Le moyen le plus rapide de supprimer Java en arrière-plan sera.
Trouver le PID Java
c:\>netstat -ano | find "8080"
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1196
TCP [::]:8080 [::]:0 LISTENING 1196
c:\>taskkill /F /PID 1196
SUCCESS: The process with PID 1196 has been terminated.
Je suppose dans l'exemple ci-dessus que vous utilisez le port http 8080
Voici ce que je fais sur Mac:
kill `lsof -i -n -P | grep TCP | grep 8080 | tr -s " " "\n" | sed -n 2p`
Il trouve le PID en utilisant 8080 et le tue.
Edit: Sous Ubuntu, utilisez la commande:
fuser -k 8080/tcp
pour tuer le processus. J'utilise spring-boot 1.3.0-Build-snapshot et le problème persiste. Mon SO est Ubuntu et le problème survient à partir d’Eclipse ou de la console. La discussion sur cette question est ici . Cela semble être un problème avec les bibliothèques Spring-Boot, du moins en ce qui concerne les bibliothèques Tomcat. Je suis également dans la ligne pour le correctif. Malheureusement, c’est le prix que nous payons pour essayer d’utiliser les technologies de pointe jusqu’à leur maturation.
Dans IDEA, vous devez arrêter le processus avant réexécuter it à nouveau. Cette commande arrêtera Tomcat intégré.
Pour ceux qui utilisent Eclipse, c'est de loin la meilleure réponse:
Ouvrez "run configurations", éditez le lancement maven que vous avez défini pour votre projet et, sous l'onglet "JRE", ajoutez -Dfork = false dans la zone de texte VM des arguments.
_ {Lorsque vous appuierez sur le bouton d'arrêt rouge, le serveur Tomcat s'arrêtera et vos ports seront libérés.
Je sais que je suis trop tard pour répondre, mais peut-être que quelqu'un obtiendra de l'aide pour cela. Les utilisateurs STS peuvent utiliser le bouton Relaunch
plutôt que Run
pour s'assurer que toute instance existante est fermée.
Pour référence :
https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-running-your-application.html
Cela ne se produit que sous Windows. https://github.com/spring-projects/spring-boot/issues/773
Mise à jour: devrait être corrigé maintenant.
J'ai eu ce problème lors de l'exécution de l'application de démarrage de printemps de Netbeans 8.1 sur Mac. Le processus Java n'a pas été interrompu lorsque j'ai appuyé sur le bouton carré rouge dans Netbeans. Ainsi, lorsque j'ai relancé l'application, j'obtiens toujours l'option "exception de liaison, adresse déjà utilisée". C'est un bug connu.
La solution consistait à ajouter spring-boot: lancer commande pour lancer les objectifs du projet ...
... et aussi si vous obtenez "Aucun plugin trouvé pour le préfixe 'spring-boot' dans le projet actuel et dans les groupes de plugins", vous devrez peut-être ajouter ceci aux dépendances:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
</parent>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
Cette solution a fonctionné pour moi avec Spring Boot v1.x et fonctionne maintenant, avec v2.x:
hangingJavaProcessToStop=`jps | grep Application | awk '{print $1}'`
echo "hangingJavaProcessToStop: $hangingJavaProcessToStop"
kill -9 $hangingJavaProcessToStop
De cette façon, vous pouvez supprimer spécifiquement le processus Java Application
de Spring Boot au lieu de supprimer tous les processus Java en même temps. Je suppose que si votre "application" Spring Boot (méthode main
contenant la classe) est appelée différemment, vous devez utiliser son nom au lieu de Application
.
J'utilise l'extrait de code ci-dessus sur ma machine Windows à l'aide de WSL/Debian. Je n'utilise pas la ligne de commande PowerShell ou Windows.
Vous pouvez provoquer un arrêt en appelant curl -v -X POST http://127.0.0.1:8091/shutdown
, à condition que vous ayez correctement configuré spring-boot.
Pour cela, vous devrez mettre à jour les propriétés de votre application. Ceci est partiellement décrit dans https://stackoverflow.com/a/26563344/58794 .
mettre à jour application.yml en ajoutant:
management:
security:
enabled: false
endpoints:
shutdown:
enabled: true
ou mettre à jour application.properties en ajoutant:
management.security.enabled=false
endpoints.shutdown.enabled=true
Une fois appelé
$ curl -v -X POST http://127.0.0.1:8091/shutdown
* STATE: INIT => CONNECT handle 0x600057990; line 1423 (connection #-5000)
* Added connection 0. The cache now contains 1 members
* Trying 127.0.0.1...
* TCP_NODELAY set
* STATE: CONNECT => WAITCONNECT handle 0x600057990; line 1475 (connection #0)
* Connected to 127.0.0.1 (127.0.0.1) port 8091 (#0)
* STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x600057990; line 1592 (connection #0)
* Marked for [keep alive]: HTTP default
* STATE: SENDPROTOCONNECT => DO handle 0x600057990; line 1610 (connection #0)
> POST /shutdown HTTP/1.1
> Host: 127.0.0.1:8091
> User-Agent: curl/7.56.1
> Accept: */*
>
* STATE: DO => DO_DONE handle 0x600057990; line 1689 (connection #0)
* STATE: DO_DONE => WAITPERFORM handle 0x600057990; line 1814 (connection #0)
* STATE: WAITPERFORM => PERFORM handle 0x600057990; line 1824 (connection #0)
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 200
< X-Application-Context: application:h2:8091
< Content-Type: application/vnd.spring-boot.actuator.v1+json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Fri, 22 Dec 2017 07:01:04 GMT
<
* STATE: PERFORM => DONE handle 0x600057990; line 1993 (connection #0)
* multi_done
* Connection #0 to Host 127.0.0.1 left intact
* Expire cleared
{"message":"Shutting down, bye..."}
le conteneur va s'arrêter
o.s.c.support.DefaultLifecycleProcessor : Stopping beans in phase 0
o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
mais si vous avez lancé depuis mvn spring-boot:run
, vous obtiendrez probablement un:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 35.613 s
[INFO] Finished at: 2017-12-22T02:01:05-05:00
[INFO] Final Memory: 25M/577M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.7.RELEASE:run (default-cli) on project PROJECTNAME: Could not exec Java: Application finished with exit code: 1 -> [Help 1]
Si vous n'avez pas management.security.enabled=false
, l'erreur suivante peut s'afficher:
$ curl -v -X POST http://127.0.0.1:8091/shutdown
> POST /shutdown HTTP/1.1
> Host: 127.0.0.1:8091
> User-Agent: curl/7.56.1
> Accept: */*
>
< HTTP/1.1 401
< X-Application-Context: application:h2:8091
< Content-Type: application/vnd.spring-boot.actuator.v1+json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Fri, 22 Dec 2017 06:56:19 GMT
<
{"timestamp":1513925779265,"status":401,"error":"Unauthorized","message":"Full authentication is required to access this resource.","path":"/shutdown"}
Si vous n'avez pas endpoints.shutdown.enabled=true
, vous verrez:
$ curl -v -X POST http://127.0.0.1:8091/shutdown
> POST /shutdown HTTP/1.1
> Host: 127.0.0.1:8091
> User-Agent: curl/7.56.1
> Accept: */*
>
< HTTP/1.1 404
< X-Application-Context: application:h2:8091
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Fri, 22 Dec 2017 06:58:52 GMT
<
{"timestamp":1513925932345,"status":404,"error":"Not Found","message":"No message available","path":"/shutdown"}
Si vous essayez un GET au lieu de POST, cette erreur sera présentée:
$ curl -v http://127.0.0.1:8091/shutdown
> GET /shutdown HTTP/1.1
> Host: 127.0.0.1:8091
> User-Agent: curl/7.56.1
> Accept: */*
>
< HTTP/1.1 405
< X-Application-Context: application:h2:8091
< Allow: POST
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Fri, 22 Dec 2017 06:54:12 GMT
<
{"timestamp":1513925652827,"status":405,"error":"Method Not Allowed","exception":"org.springframework.web.HttpRequestMethodNotSupportedException","message":"Request method 'GET' not supported","path":"/shutdown"}
J'ai rencontré le même problème en exécutant l'application SpringBoot dans Eclipse sur Mac. Je devais manuellement trouver tous les PID utilisant 8080 et les tuer. Mais heureusement, j’ai réalisé que nous pouvions supprimer cette instance de Tomcat directement à partir de la vue "console" d’Eclipse, en appuyant sur le bouton Arrêter (icône du carré rouge) et à exécuter à nouveau l’application de démarrage printanier.