我在我的服務器應用程序中有一個相當惱人的問題。Apache Mina服務器重啓java.net.BindException:已經在使用的地址
我綁定的Apache米娜用下面的代碼:
acceptor.bind(new InetSocketAddress(PORT));
凡受體爲NioSocketAcceptor。 通過HTTP接口,我可以關閉服務器,以便重新啓動它。
Server.ioAcceptor.unbind(new InetSocketAddress(Server.PORT));
for(IoSession session: Server.ioAcceptor.getManagedSessions().values()){
if(session.isConnected() && !session.isClosing()){
session.close(false);
}
}
Server.ioAcceptor.dispose();
Main.transport.stop();
Logger.getRootLogger().warn("System going down. Request from "+context.getRemoteAddress());
System.exit(10);
這是我用來停止Mina服務器的代碼。但是,如果我嘗試在接下來的幾分鐘內再次啓動服務器。 (5分鐘到15分鐘之間)我在啓動時遇到以下異常: java.net.BindException:已在使用的地址
我也嘗試了一個簡單的ioAcceptor.unbind(),但沒有區別。 服務器在OpenJDK的Centos 5上運行。 Apache Mina版本是2.0 RC1。
非常感謝您提供有關如何解決此問題的任何建議。
它們都沒有顯示任何內容。 「lsof -i」也顯示該端口上沒有連接 – Kosaki 2010-03-09 18:41:44
@Kosaki:PS。對不起,我應該做出這個評論,而不是一個答案。 – 2010-03-09 19:45:52