Spring Boot + Tomcat 8.5.8은 사용할 수 없으므로 조심하십시오!
3805 단어 spring-boot자바Tomcat
빌드 도구로 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 씨가 버그 리포트했습니다! !
...
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]
...
세세한 이야기는 생략하지만 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 씨가 버그 리포트했습니다! !
내용은, 여기에서 소개한 것과 함께입니다만 Spring Boot측에 Issue 만들고 있으므로 링크 붙여 둡니다.
어떻게해야합니까?
뭐 ~ 솔직하게 Tomcat 8.5.6을 사용하는 것이 좋다고 생각합니다.
어떤 이유로 8.5.6 대신 상위 버전을 사용해야한다면 ... 8.5.9를 사용해보십시오. 우선, 기동은 했습니다
원인은 보고 있지 않습니다만・・・응.
요약
특별한 이유가 없으면 사용하는 Spring Boot가 의존하는 Tomcat을 그대로 사용합시다 ~.
적어도, 과거의 Spring Boot의 릴리스 버젼으로 사용된 실적이 있는 버젼이 아니면···치명적인 동작 불량에 조우하는 위험성이 높아지는 것을 의식해 두는 것이 좋을 것입니다.
참고 사이트
특별한 이유가 없으면 사용하는 Spring Boot가 의존하는 Tomcat을 그대로 사용합시다 ~.
적어도, 과거의 Spring Boot의 릴리스 버젼으로 사용된 실적이 있는 버젼이 아니면···치명적인 동작 불량에 조우하는 위험성이 높아지는 것을 의식해 두는 것이 좋을 것입니다.
참고 사이트
Reference
이 문제에 관하여(Spring Boot + Tomcat 8.5.8은 사용할 수 없으므로 조심하십시오!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazuki43zoo/items/1990f4664e3a1a566044텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)