我有一个自定义的NIO服务器,但我看到了一个我无法再现也无法解释的行为:选择器不断用isreadable()==true
触发某个选择键,但当我从通道读取时,没有数据。
我有:
iterator.next()
之后的所有内容,因此它不应该是ghost键所有的东西都是空的,我在客户端尝试的每一个奇怪的事情都被服务器正确地处理了,但尽管如此,大约每四个小时(你几乎可以为它设置一个时钟),一个来自俄罗斯的IP连接到服务器并触发了bug。
此时,选择器进入过驱动状态,连续触发通道和与之相连的读取进程,这将持续报告0字节传入。
所以有两个问题:
更新:
如果我知道问题出在哪里,我可以提供这部分的一些代码,但是整个服务器太大了,无法粘贴在这里。
selectionKey.isReadable() + "/" + selectionKey.isValid() + "/" + selectionKey.channel().isOpen()
所有三个布尔函数都是真的。
如果没有一些代码,不可能正确地回答这个问题,但是:
除了实际数据和EOS之外,还有什么可以触发选择器上的读操作呢?
如果是ServerSocketChannel
,则为传入连接。
不。在你的代码中找到错误。
存在读取超时
在非阻塞套接字上不能存在读取超时,并且当您使用选择器
时,您必须使用非阻塞套接字。
我有连接到我的数据库运行。我可以执行以下没有问题: 然而,在设置了JPA和持久类之后,我总是得到一个“未选择数据库”错误。看起来我不需要调整我的数据库配置(MySQL连接到Glassfish 3.1),否则上面的代码将无法工作。 正在拨打的电话: 我尝试过这个调用直接在MySQL工作台和它不工作。 这一个确实有效: 我一直在玩游戏,似乎无法在任何地方添加数据库名称(“人”)。以下是我目前掌握的情况
主要内容:1 为什么要使用选择器?,2 创建一个选择器,3 向选择器注册频道,4 选择键,5 通过选择器选择频道,6 wakeup()方法,7 close()方法,8 完整的选择器示例Java NIO的选择器(Selector)是一个组件,可以选择一个或多个通道(Channel) 实例,并确定准备好进行读取或写入的通道。这样,单个线程可以管理多个通道(Channel),从而可以管理多个网络连接。 1 为什么要使用选择器? 仅使用单个线程来处理多个通道的优点是您需要更少的线程来处理通道。实际上,您
对开源 CI 服务器:CruiseControl、Luntbuild 和 Continuum 的调查 由于有许多持续集成服务(CI)服务器可以选择,所以很难决定哪个适应自己。在 让开发自动化 系列的第二篇文章中,开发自动化专家 Duvall 采用一致的评估标准和很多说明性示例,介绍了一些开源 CI 服务器,包括 Continuum、CruiseControl 和 Luntbuild。 在我脑海里,
我有一个Primeface应用程序,其中我启动了一个包含表单的对话框。对话框有一个保存/取消按钮对。在这个对话框中,我无法调用on完成、onstart等方法。我在其他回复中看到原因是没有执行AJAX。但是,我不知道这种情况下的原因,因为命令按钮的类型是提交,并且应该有ajax="true"(默认情况下)。有人能在里面放一点光吗? 我的xhtml: 这是我的后盾: 谢谢!
问题内容: 我想在下面的HTML片段中选择BONKERS。它的区别在于,它是单独存在的,而其所有兄弟姐妹都包含。是显而易见的选择,但由于文本节点而无法使用。我以为我知道这些东西,但这正驱使我疯狂。 我需要一个纯CSS解决方案(不能选择JS),并且无法控制源HTML。 ! 问题答案: 您可以按照这种方法。通过所需的CSS 设置元素的样式,然后重置可在样式中继承的CSS样式,即: CSS: 您可能不需
问题内容: 我在没有选择器的情况下在Kubernetes的服务中苦苦挣扎。群集通过kops安装在AWS上。我有一个带有3个Nginx Pod的部署,暴露了端口80: 创建部署后,我记下了IP地址: 并创建了一个服务于IP地址的服务: 服务已成功创建: 不幸的是,我尝试通过服务从相同名称空间的另一个Pod连接到Nginx失败: 我可以直接成功地连接到Nginx Pod: 我注意到我的服务没有任何端点