Spring Boot + Tomcat 8.5.8은 사용할 수 없으므로 조심하십시오!

현재 릴리스되고 있는 최신 버젼(2016/12/13 시점)은 Spring Boot 1.4.2.RELEASE로, 디폴트라고 Tomcat는 8.5.6이 사용됩니다. Tomcat 버전은 SPRING INITIALIZR을 통해 프로젝트를 만들면 쉽게 버전을 변경할 수 있습니다.

빌드 도구로 Maven을 사용하는 경우 다음과 같이 속성에서 버전을 지정하기 만하면됩니다.
<properties>
    <!-- ... -->
    <tomcat.version>8.5.8</tomcat.version>
</properties>

8.5.8을 사용하면 어떻게됩니까?



우선 ... 기본 포트 번호 (8080)를 사용하면 Tomcat이 시작되지 않습니다

오류 내용은 "Address already in use"입니다. 어떤 의미 흔히 볼 수 있는 오류로 여러 Spring Boot 응용 프로그램을 동시에 만지면 부팅을 멈추고 이 오류가 발생할 수 있습니다.
...
2016-12-11 03:12:06.364 ERROR 20786 --- [           main] o.a.coyote.http11.Http11NioProtocol      : Failed to start end point associated with ProtocolHandler [http-nio-8080]

java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_102]
    at sun.nio.ch.Net.bind(Net.java:433) ~[na:1.8.0_102]
...

하지만 이번에는 다른 앱은 시작하지 않고 좀비 프로세스도 없습니다.

그럼, 왜 Address already in use인가?



세세한 이야기는 생략하지만 Spring Boot에서 임베디드 Tomcat 8.5.8을 사용하면 Tomcat Connector이 의도하지 않고 두 가지 할 수 있기 때문입니다. 데포라면 양쪽 모두 8080포트를 사용하기 때문에 「Address already in use」가 나와 버린다・・・라고 하는 것입니다.

... Spring Boot의 속성을 사용하여 서버 포트 번호를 18080으로 변경하면 ...
server.port=18080

다음과 같은 로그가 나오고 서버가 시작됩니다.
...
2016-12-11 03:15:39.717  INFO 20842 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 18080 (http)
2016-12-11 03:15:39.721  INFO 20842 --- [           main] com.example.Tomcat858DemoApplication     : Started Tomcat858DemoApplication in 2.639 seconds (JVM running for 3.076)

기동은 하지만・・・

자세한 원인을 알고 싶은 분은・・・



Spring Project의 Project Member이며 Spring Boot의 Core Committer Andy Wilkinson 씨가 버그 리포트했습니다! !
  • htps : ///b…아파치ぇ. 오 rg / 부 g 쟈 / 쇼 w_ 부 g. c기? 아니 d = 60368

  • 내용은, 여기에서 소개한 것과 함께입니다만 Spring Boot측에 Issue 만들고 있으므로 링크 붙여 둡니다.
  • htps : // 기주 b. 코 m / sp 린 gp 로지 cts / sp 린 g 보오 t / 이스에 s / 7615

  • 어떻게해야합니까?



    뭐 ~ 솔직하게 Tomcat 8.5.6을 사용하는 것이 좋다고 생각합니다.
    어떤 이유로 8.5.6 대신 상위 버전을 사용해야한다면 ... 8.5.9를 사용해보십시오. 우선, 기동은 했습니다
    원인은 보고 있지 않습니다만・・・응.

    요약



    특별한 이유가 없으면 사용하는 Spring Boot가 의존하는 Tomcat을 그대로 사용합시다 ~.
    적어도, 과거의 Spring Boot의 릴리스 버젼으로 사용된 실적이 있는 버젼이 아니면···치명적인 동작 불량에 조우하는 위험성이 높아지는 것을 의식해 두는 것이 좋을 것입니다.

    참고 사이트


  • htps : ///b…아파치ぇ. 오 rg / 부 g 쟈 / 쇼 w_ 부 g. c기? 아니 d = 60368
  • htps : // 기주 b. 코 m / sp 린 gp 로지 cts / sp 린 g 보오 t / 이스에 s / 7615
  • 좋은 웹페이지 즐겨찾기