仮想環境で新たにアプリが動作するサーバー環境を作成したところ、
OSのシャットダウン時にTomcatが正しく終了せず、OSが終了できなくなってしまいました。
色々と調べたところ、解消したので経緯を残しておきます。
事象
サーバOS上で、shutdown -h nowを行うと、tomcatの終了スクリプトで待ち状態。そのうち
UnknownHostExceptionを出して、うんともすんともいかなくなる。
java.net.UnknownHostException: hostname: hostname
at java.net.InetAddress.getLocalHost(InetAddress.java:1360)
at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:490)
at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:288)
at org.apache.jk.server.JkMain.pause(JkMain.java:726)
at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:153)
at org.apache.catalina.connector.Connector.pause(Connector.java:1037)
at org.apache.catalina.core.StandardService.stop(StandardService.java:578)
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:788)
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:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
結果
ホスト名が原因ではなく、tomcatのサービスが正しくインストールされていなかったため。
過程
・ホスト名の解決
/etc/hostsに、hostnameを書いていなかったので、書きました。
しかし、ダメ。
・シャットダウンの詳細確認
きちんと動いているサーバーもあるので、シャットダウンの時の内容を比較。
すると、tomcatの終了順が違う事がわかりました。
終了順をさらに調べていくと、以下な感じ
cd /etc/rc.d
【OKケース】
[root@host rc.d]# ls -l -R | grep tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 K15tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 K15tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 K15tomcat -> ../init.d/tomcat
【NGケース】
[root@host rc.d]# ls -l -R | grep tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
lrwxrwxrwx 1 16 9月 12 19:52 2014 S80tomcat -> ../init.d/tomcat
終了スクリプトがない・・・
というわけで、
chkconfig --del tomcat
chkconfig --add tomcat
chkconfig tomcat on
を実施し、きちんと生成されて、正しくシャットダウンできる事が確認できました。
インストールに失敗したのかもしれません・・・