2009-11-18 2 views
0

Мы переносим простое Java-приложение между системами Tandem NonStop от G-Series до H-Series. Версия Java - 1.5.0_02.Проблема с получением потоков Java в HP Tandem (Non-Stop)

При выполнении основных задач ввода/вывода, как получить выходной поток из или открытия сокета клиента, мы получаем исключения, как

java.io.IOException: Value out of range

или

("значение из диапазон "- это тандемский родной жаргон, ну, все, что я полагаю).

Есть ли у кого-нибудь похожие проблемы? т. е. повреждение ввода/вывода, например, возиться с JNI?

Я полагаю, что что-то не так с системой, но где это может быть?

спасибо.

РЕДАКТИРОВАТЬ:

добавляя фрагменты, как предложено

образец фрагмент (а) - с использованием Runtime.exec() (адаптированный)

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

Стек трассировки (а):

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) 

Последняя строка выходит из строя, а выход перенаправляется на консоль (!).

образца фрагмент (б) - с помощью HttpURLConnection:

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


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

Стек трассировки (б):

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) 

Случай (а) можно избежать, так как это было обходной путь для других проблем, с предыдущими JRE версия (!), Но такое же поведение с сокетами действительно противно.

+0

Опубликовать фрагмент кода. – Xailor

+0

и полная трассировка стека. – TofuBeer

ответ

0

Обновление: Проблема была вызвана ложной библиотекой .so.

0

Код ошибки 4034 указывает, что конкретный сервер не работает в кластере NonStop. Вы уверены, что ваша система настроена правильно?

 Смежные вопросы

  • Нет связанных вопросов^_^