在Linux操作系统停止后,DefaultListeningIOReactor不会继续侦听请求

时间:2019-05-02 11:01:09

标签: apache-httpclient-4.x apache-httpcomponents

我们在Nio http服务器4.5.5上使用DefaultListeningIOReactor,在我们的应用程序中,我们有一个设置,当请求数达到特定值时,我们在DefaultListeningIOReactor对象上调用pause()方法,并在请求得到处理后,软件恢复借助resume()方法监听新请求。

但是,在Linux计算机上,此行为似乎不起作用,并且当我们尝试恢复侦听器时,它将引发BindException。同时,如果我们检查我们是否在同一端口上没有任何进程在运行。

此应用程序在Windows计算机上正常运行,并且在HTTPComponent 4.0.2 beta版中也可以正常运行。

我们正在使用此代码暂停和恢复:

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机器一起工作。

有人可以帮忙吗?

0 个答案:

没有答案