【问题标题】:AIX java.net.SocketException: A system call received a parameter that is not validAIX java.net.SocketException:系统调用收到无效的参数
【发布时间】:2016-08-30 11:19:29
【问题描述】:

我真的被 AIX java 问题困住了。我这里有一个与 SO 和 Web 上的其他问题不匹配的问题。

我的应用程序代码在另一台具有相同 JRE - IBM AIX Java 1.8 的 AIX 服务器上运行良好,但不能在我需要它的服务器上运行。

两台服务器都是 AIX 7.1,从同一个 tarball 运行同一个 JAR 和同一个 JRE。

我在使用 Spring RestTemplate.exchange() 检索和解组一些 JSON 时遇到以下错误。

这一定是服务器配置问题,但我非常卡住,不胜感激!

Caused by: java.net.SocketException: A system call received a parameter that is not valid.
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:127)
    at java.net.SocketInputStream.read(SocketInputStream.java:181)
    at java.net.SocketInputStream.read(SocketInputStream.java:152)
    at com.ibm.jsse2.a.a(a.java:209)
    at com.ibm.jsse2.a.b(a.java:41)
    at com.ibm.jsse2.a.a(a.java:193)
    at com.ibm.jsse2.as.a(as.java:268)
    at com.ibm.jsse2.as.a(as.java:745)
    at com.ibm.jsse2.e.read(e.java:56)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:257)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:297)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:356)
    at sun.net.www.http.ChunkedInputStream.readAheadBlocking(ChunkedInputStream.java:564)
    at sun.net.www.http.ChunkedInputStream.readAhead(ChunkedInputStream.java:621)
    at sun.net.www.http.ChunkedInputStream.read(ChunkedInputStream.java:708)
    at java.io.FilterInputStream.read(FilterInputStream.java:144)
    at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3352)
    at java.io.FilterInputStream.read(FilterInputStream.java:144)
    at java.io.PushbackInputStream.read(PushbackInputStream.java:197)
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.loadMore(UTF8StreamJsonParser.java:178)
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.parseEscapedName(UTF8StreamJsonParser.java:1749)
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.slowParseName(UTF8StreamJsonParser.java:1654)
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._parseName(UTF8StreamJsonParser.java:1484)
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:700)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:120)
    at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:149)
    at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:18)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2993)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2158)
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:222)

【问题讨论】:

  • 由于 JRE 是相同的,我首先要确保两个 AIX 系统安装了完全相同的操作系统补丁级别(或 IBM 所称的任何补丁级别)。这两个系统之间可能存在细微差别。或者,消息可能是错误的,并且某处存在硬件问题。您检查系统事件日志是否有任何问题?
  • 这是IBM的JDK中的一个bug,应该提交给IBM。
  • (众所周知,Java 框架无法正确处理网络问题;在现实生活中,连接丢失是正常的,应该毫不费力地处理。)

标签: java aix


【解决方案1】:

这可能是防火墙问题。 通信被某种防火墙突然中断,因此套接字被操作系统关闭,当您尝试从中读取时会出错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多