Tomcat 종료시 바로 종료되지 않는 문제 해결법

톰캣을 종료하고자 할때 보통

[user@host]# catalina.sh stop
Using CATALINA_BASE:   /software/tomcat/servers/test
Using CATALINA_HOME:   /software/tomcat
Using CATALINA_TMPDIR: /software/tomcat/servers/test/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /software/tomcat/bin/bootstrap.jar
Using CATALINA_PID:    /software/tomcat/servers/test/catalina.pid
Tomcat did not stop in time. PID file was not removed.

종료명령을 내려도 위와같이 정상 종료가 되지 않는 경우가 있다.
이런경우 로그를 살펴보면 대략 3~40초정도 지나면 아래와 같이 오류가 발생하면서 종료되는것을 볼 수 있다.

INFO: JK: ajp13 listening on /0.0.0.0:8109
Feb 17, 2016 3:34:43 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/14  config=null
Feb 17, 2016 3:34:43 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 425 ms
Feb 17, 2016 3:35:47 PM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-0.0.0.0-8180
Feb 17, 2016 3:36:07 PM org.apache.catalina.connector.Connector pause
SEVERE: Protocol handler pause failed
java.net.UnknownHostException: centos: centos
	at java.net.InetAddress.getLocalHost(InetAddress.java:1496)
	at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:507)
	at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:288)
	at org.apache.jk.server.JkMain.pause(JkMain.java:739)
	at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:186)
	at org.apache.catalina.connector.Connector.pause(Connector.java:1156)
	at org.apache.catalina.core.StandardService.stop(StandardService.java:578)
	at org.apache.catalina.core.StandardServer.stop(StandardServer.java:793)
	at org.apache.catalina.startup.Catalina.stop(Catalina.java:662)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:629)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414

대부분의 이유는 위와같은데 해당 호스트의 hostnameresolve하지 못해 지연이 발생하는 것으로 볼 수 있다.

위의 문제를 해결하기 위해서는 아래와 같이 /etc/hosts 파일에 해당 서버의 아이피와 호스트명을 등록해주면 해결된다.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.240.137	centos