2016-05-04 7 views
0

Ich bin wirklich mit einem AIX-Java-Problem fest. Ich habe hier ein Problem, das nicht mit anderen Problemen auf SO und im Web übereinstimmt.AIX java.net.SocketException: Ein Systemaufruf empfing einen Parameter, der nicht gültig ist

Mein Anwendungscode läuft auf einem anderen AIX-Server mit genau der gleichen JRE - IBM AIX Java 1.8, läuft aber nicht auf dem Server, für den er benötigt wird.

Beide Server sind AIX 7.1, die dieselbe JAR und dieselbe JRE aus demselben Tarball ausführen.

Ich erhalte den folgenden Fehler, wenn ich eine Spring RestTemplate.exchange() verwende, um JSON abzurufen und zu entfernen.

Es muss ein Serverkonfigurationsproblem sein, aber ich bin sehr stecken und würde jede Hilfe zu schätzen wissen!

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) 
+0

Da die JREs identisch sind, würde ich zunächst sicherstellen, dass beide AIX-Systeme genau die gleiche Betriebssystem-Patch-Ebene (oder wie auch immer IBM sie nennt) installiert haben. Wahrscheinlich gibt es zwischen den beiden Systemen etwas ganz anderes. Oder die Nachricht könnte falsch sein und es gibt irgendwo ein Hardwareproblem. Haben Sie die Systemereignisprotokolle auf Probleme überprüft? –

+0

Dies ist ein Fehler im IBM JDK und sollte an IBM gesendet werden. – EJP

+0

(Java-Frameworks sind dafür bekannt, Netzwerkprobleme nicht richtig zu behandeln; im realen Leben sind Verbindungsverluste normal, sie sollten ohne viel Aufwand gehandhabt werden.) –

Antwort

0

Es ist wahrscheinlich ein Firewall-Problem. Die Kommunikation wird abrupt durch eine Art von Firewall unterbrochen, daher wird der Socket vom Betriebssystem geschlossen, was zu Fehlern führt, wenn Sie versuchen, von ihm zu lesen.