私は(まあ、今朝まで)OpenfireイントラネットXMPPサーバーを持っていて、触れられることなく370日間陽気に稼働し、合計で約3年間稼働していました。ユーザーは隣接サーバー上のADに対して認証され、OUによってグループに分割されます。そのすべての機能はうまく機能します[ed | s]。
私の問題は、サービスが今朝クラッシュしたことです。管理コンソールを使用して問題を特定しようとすると、アシスタントが「no Java heapspace」エラー(およびスクリーンショットなし、申し訳ありません)」を受け取りました。 。物理コンソールに移動してサービスを再起動すると、正常に再起動したか、少なくとも目に見えるエラーは発生しませんでした。
しかし、今、管理コンソールに移動しようとすると、初期設定ページが表示されます。私はうめきましたが、メモを掘り出し、すべてのLDAP情報とDB接続情報を再入力しました。ある程度の満足感を持って、[管理コンソールにログイン]ボタンを押して、待ちました...ちょうど残したセットアップ画面に戻り、希望するシステム言語を尋ねました。そう:
MySQLサーバーが実行されており、接続情報は/opt/openfire/conf/openfire.xmlファイルで正しいです。そのファイルの資格情報を使用してofPropertyテーブルを表示することにより、接続をテストしました。 ofPropertyテーブルの内容を確認すると、すべてのLDAP情報、名前とその他のフィールド、グループ定義、すべてを含む設定がそこに保存されていることがわかります。しかしOpenfireはデータベースからそれらをロードすることを拒否します。
私がチェックしたこと:
編集:接続が拒否されたことを示すログの切り抜きが、明らかに時間の早い段階でのみ発生しました:
2012.05.16 09:27:47 org.jivesoftware.database.DbConnectionManager - Unable to get a connection from the database pool (attempt 10 out of 10).
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
Java.net.ConnectException
MESSAGE: Connection refused
STACKTRACE:
Java.net.ConnectException: Connection refused
at Java.net.PlainSocketImpl.socketConnect(Native Method)
at Java.net.PlainSocketImpl.doConnect(Unknown Source)
at Java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at Java.net.PlainSocketImpl.connect(Unknown Source)
at Java.net.SocksSocketImpl.connect(Unknown Source)
at Java.net.Socket.connect(Unknown Source)
at Java.net.Socket.connect(Unknown Source)
at Java.net.Socket.<init>(Unknown Source)
at Java.net.Socket.<init>(Unknown Source)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.Java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.Java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.Java:2771)
at com.mysql.jdbc.Connection.<init>(Connection.Java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.Java:285)
at Java.sql.DriverManager.getConnection(Unknown Source)
at Java.sql.DriverManager.getConnection(Unknown Source)
at org.logicalcobwebs.proxool.DefaultConnectionBuilder.buildConnection(DefaultConnectionBuilder.Java:39)
at org.logicalcobwebs.proxool.Prototyper.buildConnection(Prototyper.Java:159)
at org.logicalcobwebs.proxool.ConnectionPool.getConnection(ConnectionPool.Java:211)
at org.logicalcobwebs.proxool.ProxoolDriver.connect(ProxoolDriver.Java:89)
at Java.sql.DriverManager.getConnection(Unknown Source)
at Java.sql.DriverManager.getConnection(Unknown Source)
at org.jivesoftware.database.DefaultConnectionProvider.getConnection(DefaultConnectionProvider.Java:86)
at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.Java:124)
at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.Java:754)
at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.Java:480)
at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.Java:212)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at Java.lang.reflect.Constructor.newInstance(Unknown Source)
at Java.lang.Class.newInstance0(Unknown Source)
at Java.lang.Class.newInstance(Unknown Source)
at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.Java:113)
at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.Java:58)
** END NESTED EXCEPTION **
Last packet sent to the server was 1 ms ago.
at com.mysql.jdbc.Connection.createNewIO(Connection.Java:2847)
at com.mysql.jdbc.Connection.<init>(Connection.Java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.Java:285)
at Java.sql.DriverManager.getConnection(Unknown Source)
at Java.sql.DriverManager.getConnection(Unknown Source)
at org.logicalcobwebs.proxool.DefaultConnectionBuilder.buildConnection(DefaultConnectionBuilder.Java:39)
at org.logicalcobwebs.proxool.Prototyper.buildConnection(Prototyper.Java:159)
at org.logicalcobwebs.proxool.ConnectionPool.getConnection(ConnectionPool.Java:211)
at org.logicalcobwebs.proxool.ProxoolDriver.connect(ProxoolDriver.Java:89)
at Java.sql.DriverManager.getConnection(Unknown Source)
at Java.sql.DriverManager.getConnection(Unknown Source)
at org.jivesoftware.database.DefaultConnectionProvider.getConnection(DefaultConnectionProvider.Java:86)
at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.Java:124)
at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.Java:754)
at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.Java:480)
at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.Java:212)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at Java.lang.reflect.Constructor.newInstance(Unknown Source)
at Java.lang.Class.newInstance0(Unknown Source)
at Java.lang.Class.newInstance(Unknown Source)
at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.Java:113)
at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.Java:58)
2012.05.16 09:27:48 org.jivesoftware.openfire.XMPPServer - Server halted
2012.05.16 09:36:34 org.jivesoftware.openfire.pubsub.PubSubModule - Publish-Subscribe domain: pubsub.cc.server.local
2012.05.16 09:36:36 org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - Multi User Chat domain: conference.cc.server.local
2012.05.16 09:37:48 org.jivesoftware.openfire.XMPPServer - Openfire 3.7.1 [May 16, 2012 9:37:48 AM]
2012.05.16 09:38:01 org.jivesoftware.openfire.container.AdminConsolePlugin - Admin console listening at:
http://127.0.0.1:9090
https://127.0.0.1:9091
2012.05.16 09:54:21 org.jivesoftware.openfire.XMPPServer - Server halted
2012.05.16 09:54:33 org.jivesoftware.openfire.XMPPServer - Openfire 3.7.1 [May 16, 2012 9:54:33 AM]
2012.05.16 09:54:46 org.jivesoftware.openfire.container.AdminConsolePlugin - Admin console listening at:
http://127.0.0.1:9090
https://127.0.0.1:9091
2012.05.16 10:07:24 org.jivesoftware.openfire.XMPPServer - Server halted
2012.05.16 10:07:37 org.jivesoftware.openfire.XMPPServer - Openfire 3.7.1 [May 16, 2012 10:07:37 AM]
2012.05.16 10:07:49 org.jivesoftware.openfire.container.AdminConsolePlugin - Admin console listening at:
http://127.0.0.1:9090
https://127.0.0.1:9091
2012.05.16 10:26:39 org.jivesoftware.openfire.XMPPServer - Server halted
2012.05.16 10:28:54 org.jivesoftware.openfire.XMPPServer - Openfire 3.7.1 [May 16, 2012 10:28:54 AM]
2012.05.16 10:29:10 org.jivesoftware.openfire.container.AdminConsolePlugin - Admin console listening at:
http://127.0.0.1:9090
https://127.0.0.1:9091
2012.05.16 10:33:25 org.jivesoftware.openfire.XMPPServer - Server halted
2012.05.16 10:33:38 org.jivesoftware.openfire.XMPPServer - Openfire 3.7.1 [May 16, 2012 10:33:38 AM]
2012.05.16 10:33:51 org.jivesoftware.openfire.container.AdminConsolePlugin - Admin console listening at:
http://127.0.0.1:9090
https://127.0.0.1:9091
2012.05.16 10:51:38 org.jivesoftware.openfire.XMPPServer - Server halted
2012.05.16 10:51:51 org.jivesoftware.openfire.XMPPServer - Openfire 3.7.1 [May 16, 2012 10:51:51 AM]
2012.05.16 10:52:04 org.jivesoftware.openfire.container.AdminConsolePlugin - Admin console listening at:
http://127.0.0.1:9090
https://127.0.0.1:9091
2012.05.16 10:53:01 org.jivesoftware.openfire.XMPPServer - Server halted
2012.05.16 10:53:35 org.jivesoftware.openfire.XMPPServer - Openfire 3.7.1 [May 16, 2012 10:53:35 AM]
2012.05.16 10:53:49 org.jivesoftware.openfire.container.AdminConsolePlugin - Admin console listening at:
http://127.0.0.1:9090
https://127.0.0.1:9091
その1つの失敗の後、管理コンソールが表示されるので、サービスの再構成と再起動をさまざまに試みました。
短編小説:他の場所で別の(動作中の)インストールを確認しました。次のように、稼働中のインストールのファイル<setup>
にopenfire.xml
という値が存在することがわかりました。
...(XML snipped)
<minConnections>5</minConnections>
<maxConnections>25</maxConnections>
<connectionTimeout>1.0</connectionTimeout>
</defaultProvider>
</database>
<setup>true</setup>
</jive>
何らかの理由で、セットアップ行がopenfire.xml
から欠落していました。
興味深いことに、ファイルは所有されており、rootによってのみ書き込み可能であるため、一部の特権プロセスは、セットアッププロセスの実行時に、接続パラメーターをそのままにして、行を削除しました(どういうわけか???)。ただし、ファイルはrootによってのみ書き込み可能であったため、JREによって実行されるセットアップスクリプトはファイルに書き込むことができませんでした。また、私はバカで、Java例外の中でこの行を見逃しました:
Java.io.IOException: XML properties file must be writable: openfire.xml
どうやらそれはセットアッププロセスのいくつかの部分に書き込み可能ですが、他の部分には書き込み可能ではありませんか?知りません。しかし、他の誰かがこの問題を抱えているなら、うまくいけば、彼らはここで答えを見つけるでしょう。 <setup>
値をopenfire.xmlに追加することで、問題を修正し、Openfireをすぐにロードすることができました。