我有同样的问题。这是我的应用程序(我已停止)的第一个实例,它仍订阅了此端口,因此新实例无法启动。在我的情况下,它与套接字TIME_WAIT机制无关,而是与以下事实有关:调用后,所有正在运行的线程都花了一些时间才正常结束。在我的情况下,有效的方法是在停止应用程序之前注销Bean,以便套接字可用。stop()
private void unregisterBeanForName(String name) {
try {
JMXServiceURL jmxServiceURL = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi");
JMXConnector cc = JMXConnectorFactory.connect(jmxServiceURL);
MBeanServerConnection mbsc = cc.getMBeanServerConnection();
//This information is available in jconsole
ObjectName serviceConfigName = new ObjectName("YourObjectName");
mbsc.unregisterMBean(serviceConfigName);
// Close JMX connector
cc.close();
} catch (Exception e) {
System.out.println("Exception occurred: " + e.toString());
e.printStackTrace();
}
}