Problème d'obtention de flux Java dans HP Tandem (Non-Stop)


Nous portons une application Java simple entre les systèmes Tandem NonStop, de la série G à la série H. La version Java est 1.5.0_02.

Lors de l'exécution de tâches d'E/S de base telles que l'obtention d'un flux de sortie ou l'ouverture d'un socket client, nous recevons des exceptions comme

java.io.IOException: Value out of range

Ou

java.net.SocketException: Value out of range

("value out of range" est un jargon natif Tandem pour, eh bien, tout ce que je suppose).

Quelqu'un a-t-il des problèmes similaires? c'est-à-dire la corruption d'E/S pendant par exemple jouer avec JNI?

Je suppose qu'il y a quelque chose qui ne va pas avec le système, mais où pourrait-il être?

Merci.

MODIFIER:

Ajout d'extraits, comme demandé

Exemple d'extrait (a) - utilisation de Runtime.exec () (adapté)

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

Trace de pile (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 dernière ligne échoue et la sortie est redirigée vers la console (!).

Extrait d'exemple (b) - utilisation de HttpURLConnection:

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


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

Trace de pile (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)

Le cas (a) peut être évité parce qu'il était une solution de contournement pour d'autres problèmes avec la version précédente de JRE (!), mais le même comportement avec les sockets est vraiment méchant.

Author: Kelly S. French, 2009-11-18

2 answers

Le code d'erreur 4034 semble indiquer qu'un serveur spécifique ne s'exécute pas dans votre cluster NonStop. Êtes-vous sûr que votre système est correctement configuré?

 0
Author: jarnbjo, 2009-11-19 00:08:51

Mise à jour: Le problème a été causé par une fausse bibliothèque .so.

 0
Author: AndreaG, 2009-11-19 08:53:49