Pregunta

Estamos portando una aplicación Java simple entre los sistemas en tándem sin parar, desde la serie G hasta la serie H. La versión Java es 1.5.0_02.

Al realizar tareas de E/S básicas como obtener la transmisión de salida o abrir un socket de cliente, recibimos excepciones como

java.io.IOException: Value out of range

o

java.net.SocketException: Value out of range

("Valor fuera de rango" es jerga nativa en tándem para, bueno, todo lo que supongo).

¿Alguien tiene problemas similares? es decir, la corrupción de E/S mientras, por ejemplo, jugando con JNI?

Supongo que hay algo mal con el sistema, pero ¿dónde podría estar?

Gracias.

EDITAR:

Agregar fragmentos según lo solicitado

Muestra de fragmento (a) - usando Runtime.exec () (adaptado)

Properties envVars = new Properties();
Process p = r.exec("/bin/env");
envVars.load(p.getInputStream());

Stack Trace (a):

java.io.IOException: Value out of range (errno:4034)
    at java.io.FileInputStream.readBytes(Native Method)
    at java.io.FileInputStream.read(FileInputStream.java:194)
    at java.lang.UNIXProcess$DeferredCloseInputStream.read(UNIXProcess.java:221)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:254)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
    at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:411)
    at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:453)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:183)
    at java.io.InputStreamReader.read(InputStreamReader.java:167)
    at java.io.BufferedReader.fill(BufferedReader.java:136)
    at java.io.BufferedReader.readLine(BufferedReader.java:299)
    at java.io.BufferedReader.readLine(BufferedReader.java:362)
    at util.Environment.getVariables(Environment.java:39)

La última línea falla, y la salida se redirige a la consola (!).

Muestra de fragmento (b) - usando HttpURLConnection:

public WorkerThread (HttpURLConnection conn, String requestData, Logger logger)
{
    this.conn = conn;
    ...
}


public void run ()
{
    OutputStream out = conn.getOutputStream ();
}

Rastreo de pila (b):

java.net.SocketException: Value out of range (errno:4034)
  at java.net.PlainSocketImpl.socketConnect(Native Method)
  at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
  at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
  at java.net.Socket.connect(Socket.java:507)
  at sun.net.NetworkClient.doConnect(NetworkClient.java:155)
  at sun.net.www.http.HttpClient.openServer(HttpClient.java:365)
  at sun.net.www.http.HttpClient.openServer(HttpClient.java:477)
  at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:280)
  at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:337)
  at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:176)
  at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:736)
  at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:162)
  at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:828)
  at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)

El caso (a) se puede evitar porque fue una solución para otros problemas con la versión JRE anterior (!), Pero el mismo comportamiento con los enchufes es realmente desagradable.

¿Fue útil?

Solución 2

ACTUALIZACIÓN: El problema fue causado por un espurio .so biblioteca.

Otros consejos

El código de error 4034 parece indicar que un servidor específico no se está ejecutando en su clúster sin parar. ¿Estás seguro de que tu sistema está configurado correctamente?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top