Мы используем DefaultListeningIOReactor с HTTP-сервером nio 4.5.5, в нашем приложении есть настройка, когда число запросов достигает определенного значения, мы вызываем метод pause () для объекта DefaultListeningIOReactor и когда запрос обрабатывается, программное обеспечение возобновляется прослушивание нового запроса с помощью метода resume ().
Однако на машине с Linux это поведение, похоже, не работает, и когда мы пытаемся возобновить прослушиватель, оно вызывает BindException. В то же время, если мы проверим, у нас нет ни одного процесса, запущенного в том же порту.
Это приложение отлично работает с Windows-машиной, а также с бета-версией HTTPComponent 4.0.2.
Мы используем этот код для приостановки и возобновления:
ListeningIOReactor serverHandle = (ListeningIOReactor)ServerHandles.get(portKey);
if (serverHandle!=null)
{
serverHandle.pause();
}
ListeningIOReactor serverHandle = (ListeningIOReactor)ServerHandles.get(portKey);
if (serverHandle!=null)
{
serverHandle.resume();
}
Вот этот ServerHandles - карта, которую мы заполняли во время создания сервера следующим образом:
final ListeningIOReactor ioReactor = new DefaultListeningIOReactor(
workerThread, params);
ServerHandles.put(new Integer(connector.getPort()),ioReactor);
ioReactor.listen(socketaddress);
ioReactor.execute(ioEventDispatch);
Он также должен работать на Linux-машине.
Может кто-нибудь, пожалуйста, помогите для этого.