栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

由于Mac OS X上的'java.net.SocketException Invalid arguments',Tomcat启动失败

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

由于Mac OS X上的'java.net.SocketException Invalid arguments',Tomcat启动失败

您是否尝试过打开JNI调试用

-Xcheck:jni
?有趣的是,Oracle文档使用
PlainSocketImpl.socketAccept
错误作为何时使用此错误的示例。

还要注意,错误7131399的含义是,由于Mac上的问题,JNI

poll()
在大多数平台
select()
上使用,但在Mac OS
poll()
上使用。所以也许
select()
也坏了。再深入一点,如果“
ndfs大于FD_SETSIZE且未定义_DARWIN_UNLIMITED_SELECT,则select()将返回EINVAL。”
FD_SETSIZE为1024,这听起来像您有大量的应用程序正在加载,因此也许所有这些都过滤掉了,一次只能等待1024个以上的FD。

为了获得更多的荣誉,请查看您的计算机上实际上是否已修复了相关的(据说已修复)Java错误。错误报告具有指向测试用例的指针。


感谢Old Pro的回答,我确认

select()
FD_SETSIZE限制是原因。我为此限制找到了一个现有的错误:

https://bugs.openjdk.java.net/browse/JDK-8021820

可以使用以下代码重现该问题:

import java.io.*;import java.net.*;public class SelectTest {  public static void main(String[] args) throws Exception {    // Use 1024 file descriptors. There'll already be some in use, obviously, but this guarantees the problem will occur    for(int i = 0; i < 1024; i++) {      new FileInputStream("/dev/null");    }    ServerSocket socket = new ServerSocket(8080);    socket.accept();  }}

差不多一年后,Java 7u60修复了此问题:

http://www.oracle.com/technetwork/java/javase/2col/7u60-bugfixes-2202029.html

我还发现Tomcat的WebappClassLoader在90秒后关闭了文件句柄,这解释了为什么设置断点可以防止此问题发生。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/514840.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号