我们在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机器一起工作。
有人可以帮忙吗?