DefaultListeningIOReactor не возобновляет прослушивание запросов после остановки в ОС Linux - PullRequest
0 голосов
/ 02 мая 2019

Мы используем 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-машине.

Может кто-нибудь, пожалуйста, помогите для этого.

...