복붙노트

[SPRING] mvn spring-boot를 종료하는 중 : run이 바람둥이를 멈추지 않습니다.

SPRING

mvn spring-boot를 종료하는 중 : run이 바람둥이를 멈추지 않습니다.

나는 mvn spring-boot로 spring-boot를 성공적으로 시작할 수있다. 문서에서 ctrl-c를 누르면 정상적으로 종료 할 것이라고 언급하고있다.

Terminate batch job (Y/N)? Y

maven 프로세스는 종료되지만 Tomcat은 여전히 ​​실행 중이며 여전히 웹 페이지를 공격 할 수 있습니다. 스프링 부트를 다시 시작하려고하면 포트가 사용 중이므로 Tomcat을 시작하지 못합니다.

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: 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

계속하려면 실행중인 프로세스를 수동으로 종료해야합니다. 이게 버그 야? 아니면 내가 놓친 게 있니?

해결법

  1. ==============================

    1.Windows 7에서 실행되는 버전 1.1.9에서는 여전히 나에게 발생합니다.

    Windows 7에서 실행되는 버전 1.1.9에서는 여전히 나에게 발생합니다.

    그래서 Ctrl C를 치면. 백그라운드 자바를 죽이는 가장 빠른 방법이 될 것입니다.

    자바 PID 찾기

         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.
    

    위의 예제에서 http 포트 8080에서 실행 중이라고 가정합니다.

  2. ==============================

    2.다음은 Mac에서 내가하는 일입니다.

    다음은 Mac에서 내가하는 일입니다.

    kill `lsof -i -n -P | grep TCP | grep 8080 | tr -s " " "\n" | sed -n 2p`
    

    그것은 8080을 사용하여 PID를 찾고 그것을 죽입니다.

  3. ==============================

    3.편집하다: 우분투에서 다음 명령을 사용하십시오 :

    편집하다: 우분투에서 다음 명령을 사용하십시오 :

    fuser -k 8080/tcp
    

    그 과정을 죽이기. 저는 스프링 부트 1.3.0-Build-snapshot을 사용하고 있으며 문제는 여전히 지속됩니다. 내 SO는 우분투이며 이클립스 또는 콘솔에서 문제가 발생합니다. 이 문제에 대한 토론이 여기에 있습니다. 이것은 적어도 Tomcat 라이브러리에 관한 스프링 부트 라이브러리의 문제점으로 보인다. 나는 또한이 수정을위한 라인에있어. 불행히도 이것은 성숙되기 전까지는 최첨단 기술을 사용하여 지불하는 대가입니다.

  4. ==============================

    4.IDEA에서는 다시 실행하기 전에 프로세스를 중지해야합니다. 이 명령은 임베디드 Tomcat을 종료합니다.

    IDEA에서는 다시 실행하기 전에 프로세스를 중지해야합니다. 이 명령은 임베디드 Tomcat을 종료합니다.

  5. ==============================

    5.나는 대답하기에는 너무 늦었지만 어떤 도움을받을 수는 있습니다. STS 사용자는 Run 대신 Relaunch 버튼을 사용하여 기존 인스턴스가 닫혀 있는지 확인할 수 있습니다. 참조 용 : https : / / / / / /

    나는 대답하기에는 너무 늦었지만 어떤 도움을받을 수는 있습니다. STS 사용자는 Run 대신 Relaunch 버튼을 사용하여 기존 인스턴스가 닫혀 있는지 확인할 수 있습니다. 참조 용 : https : / / / / / /

  6. ==============================

    6.Eclipse를 사용하는 사람들에게 이것은 최고의 대답입니다 :

    Eclipse를 사용하는 사람들에게 이것은 최고의 대답입니다 :

    "실행 구성"을 열고 프로젝트에 정의한 maven 실행을 편집 한 다음 "JRE"탭 아래에 -Dfork = false를 VM 인수 텍스트 영역에 추가하십시오.

    그런 다음 빨간색 중지 버튼을 누르면 Tomcat 서버가 중지되고 포트가 해제됩니다.

    답은 jordihs의 Github에있는 게시물에서 가져옵니다.

  7. ==============================

    7.Windows에서만 발생합니다. https://github.com/spring-projects/spring-boot/issues/773

    Windows에서만 발생합니다. https://github.com/spring-projects/spring-boot/issues/773

    업데이트 : 지금 수정해야합니다.

  8. ==============================

    8.Mac에서 netbeans 8.1에서 스프링 부팅 응용 프로그램을 실행할 때이 문제가 발생했습니다. 자바 프로세스는 넷빈즈의 빨간색 정사각형 버튼을 눌렀을 때 종료되지 않았고, 앱을 다시 시작했을 때 항상 "바인딩 예외, 주소가 이미 사용 중"이라는 것을 알았습니다. 이는 알려진 버그입니다.

    Mac에서 netbeans 8.1에서 스프링 부팅 응용 프로그램을 실행할 때이 문제가 발생했습니다. 자바 프로세스는 넷빈즈의 빨간색 정사각형 버튼을 눌렀을 때 종료되지 않았고, 앱을 다시 시작했을 때 항상 "바인딩 예외, 주소가 이미 사용 중"이라는 것을 알았습니다. 이는 알려진 버그입니다.

    해결책은 spring-boot : run 명령을 추가하여 프로젝트의 목표를 실행하십시오.

    ... 그리고 "현재 프로젝트와 플러그인 그룹에서 접두어 'spring-boot'에 대한 플러그인을 찾을 수 없다면"의존성에 이것을 추가해야 할 수도 있습니다 :

    <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>
    
  9. ==============================

    9.내가 Mac에서 Eclipse에서 SpringBoot 응용 프로그램을 실행하는 동일한 문제가 발생했습니다. 수동으로 8080을 사용하는 모든 PID를 찾아서 죽여야했습니다. 그러나 다행스럽게도 Eclipse의 "콘솔"보기에서 정지 (빨간색 사각형 아이콘) 버튼을 누르고 봄 부팅 응용 프로그램을 다시 실행하여 해당 tomcat 인스턴스를 종료 할 수 있다는 것을 깨달았습니다.

    내가 Mac에서 Eclipse에서 SpringBoot 응용 프로그램을 실행하는 동일한 문제가 발생했습니다. 수동으로 8080을 사용하는 모든 PID를 찾아서 죽여야했습니다. 그러나 다행스럽게도 Eclipse의 "콘솔"보기에서 정지 (빨간색 사각형 아이콘) 버튼을 누르고 봄 부팅 응용 프로그램을 다시 실행하여 해당 tomcat 인스턴스를 종료 할 수 있다는 것을 깨달았습니다.

  10. ==============================

    10.전화를 걸어 종료해야합니다. curl -v -X POST http://127.0.0.1:8091/shutdown은 spring-boot를 적절히 설정했다면 가능합니다.

    전화를 걸어 종료해야합니다. curl -v -X POST http://127.0.0.1:8091/shutdown은 spring-boot를 적절히 설정했다면 가능합니다.

    이를 지원하려면 응용 프로그램 속성을 업데이트해야합니다. 부분적으로 https://stackoverflow.com/a/26563344/58794에 설명되어 있습니다.

    다음을 추가하여 application.yml을 업데이트하십시오.

    management:
      security:
        enabled: false
    endpoints:
      shutdown:
        enabled: true
    

    다음을 추가하여 application.properties를 업데이트하십시오.

    management.security.enabled=false
    endpoints.shutdown.enabled=true
    

    한번 불렀다.

    $ 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..."}
    

    컨테이너가 종료됩니다.

    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'
    

    하지만 mvn spring-boot에서 시작한 경우 실행하십시오 :

    [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]
    

    management.security.enabled = false가 아닌 경우 다음 오류가 표시 될 수 있습니다.

    $ 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"}
    

    endpoints.shutdown.enabled = true가 없으면 다음과 같이 표시됩니다.

    $ 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"}
    

    POST 대신 GET을 시도하면이 오류가 표시됩니다.

    $ 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"}
    
  11. ==============================

    11.이 솔루션은 Spring Boot v1.x와 함께 v2.x에서 작동합니다.

    이 솔루션은 Spring Boot v1.x와 함께 v2.x에서 작동합니다.

    hangingJavaProcessToStop=`jps | grep Application | awk '{print $1}'`
    echo "hangingJavaProcessToStop: $hangingJavaProcessToStop"
    kill -9 $hangingJavaProcessToStop
    

    이렇게하면 모든 Java 프로세스를 한꺼번에 종료하는 대신 Spring Boot의 Application Java 프로세스를 강제 종료 할 수 있습니다. Spring 부트 "Application"(클래스를 포함하는 메인 메소드)가 다르게 호출된다면 Application 대신 그 이름을 사용해야한다고 가정합니다.

    위의 코드는 WSL / Debian을 사용하는 Windows 컴퓨터에서 실행 중입니다. PowerShell 또는 Windows 명령 줄을 사용하지 않습니다.

  12. ==============================

    12.NetBeans를 사용하는 경우 실행 (프로젝트 이름)이 표시된 오른쪽 하단의 교차 아이콘을 클릭하여 서버 또는 프로세스를 중지 할 수 있습니다.

    NetBeans를 사용하는 경우 실행 (프로젝트 이름)이 표시된 오른쪽 하단의 교차 아이콘을 클릭하여 서버 또는 프로세스를 중지 할 수 있습니다.

  13. ==============================

    13.순서대로 다음 명령을 입력하십시오.

    순서대로 다음 명령을 입력하십시오.

    $ ps -ef | grep -i java
    $ kill -9 3361
    
  14. from https://stackoverflow.com/questions/23432651/terminating-mvn-spring-bootrun-doesnt-stop-tomcat by cc-by-sa and MIT license