LoginSignup
0
0

More than 3 years have passed since last update.

Port 8686 is not available for the internal rmi registry.となった時の対応方法

Posted at
  • 環境
    • Red Hat Enterprise Linux Server release 6.3 (Santiago)
    • GlassFish Server Open Source Edition 4.1 (build 13)

GlassFishに繋がらないのでsever.logをみたらなんか言われていた

server.log
[2020-05-29T17:42:42.076+0900] [glassfish 4.1] [SEVERE] [] [] [tid: _ThreadID=65 _ThreadName=Thread-9] [timeMillis: 1590741762076] [levelValue: 1000] [[
  java.lang.RuntimeException: Port 8686 is not available for the internal rmi registry. This means that a call was made with the same port, without closing earlier registry instance. This has to do with the system jmx connector configuration in admin-service element of the configuration associated with this instance
        at org.glassfish.admin.mbeanserver.RMIConnectorStarter._startRegistry(RMIConnectorStarter.java:257)
        at org.glassfish.admin.mbeanserver.RMIConnectorStarter.startRegistry(RMIConnectorStarter.java:235)
        at org.glassfish.admin.mbeanserver.RMIConnectorStarter.<init>(RMIConnectorStarter.java:169)
        at org.glassfish.admin.mbeanserver.JMXStartupService$JMXConnectorsStarterThread.startConnector(JMXStartupService.java:310)
        at org.glassfish.admin.mbeanserver.JMXStartupService$JMXConnectorsStarterThread.run(JMXStartupService.java:350)]]

原因 : 生き残っている余計なGlassFishがいるから

# ポート8686をGlassFishに設定している
$ grep 8686 /path/to/glassfish4/glassfish/domains/domain1/config/domain.xml
        <jmx-connector port="8686" address="0.0.0.0" auth-realm-name="admin-realm" name="system">

# ポート8686が使われているか見てみる
$ netstat -a -o -n | grep 8686
tcp        0      0 :::8686                     :::*                        LISTEN      off (0.00/0/0)

# GlassFishを停止してみる
$ sudo /etc/init.d/glassfish stop
[sudo] password for ponsuke:
Shutting down glassfish-domain1: Waiting for the domain to stop .
Command stop-domain executed successfully.
                                                           [  OK  ]

# 停止したのにまだ使われている
$ netstat -a -o -n | grep 8686
tcp        0      0 :::8686                     :::*                        LISTEN      off (0.00/0/0)

# ポート8686を使っているプロセスを調べる(sudoしないと他のユーザーのプロセスがみれない)
$ lsof -i:8686
$ sudo lsof -i:8686
[sudo] password for ponsuke:
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    1219 root  406u  IPv6   9990      0t0  TCP *:sun-as-jmxrmi (LISTEN)

# プロセスIDからプロセスを確認するとやっぱり犯人は生き残ったGlassFishだった
$ ps aux | grep 1219
root      1219  4.8  6.5 3675320 489828 ?      Sl   17:41   1:04 /usr/java/default/bin/java -cp /path/to/glassfish4/glassfish/modules/glassfish.jar....

対応 : 生き残っているGlassFishを殺して、generatedディレクトリ配下を削除する

WindowsのEclipseでやった時と同じようなことをする。

  1. 生き残っているGlassFishを殺す
  2. generatedディレクトリ配下を削除する
  3. GlassFishを再起動する
# 生き残っているGlassFishを殺す
$ sudo kill 1219

# generatedディレクトリ配下を削除する
$ sudo rm -rf /path/to/glassfish4/glassfish/domains/domain1/generated/*

# GlassFishを再起動する
$ sudo /etc/init.d/glassfish start
Starting glassfish-domain1: Bad Network Configuration.  DNS can not resolve the hostname:
java.net.UnknownHostException: localhost.localhost: localhost.localhost: ホスト名に対応するアドレスがありません
Waiting for domain1 to start .........................................
Successfully started the domain : domain1
domain  Location: /path/to/glassfish4/glassfish/domains/domain1
Log File: /path/to/glassfish4/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
                                                           [  OK  ]
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0