مشكلة في الحصول على تدفقات Java في HP Tandem (بدون توقف)

StackOverflow https://stackoverflow.com/questions/1758062

سؤال

نحن نقوم بنقل تطبيق Java بسيط بين أنظمة الترادفية غير المتوقفة ، من سلسلة G إلى H-Series. إصدار Java هو 1.5.0_02.

عند أداء مهام الإدخال/الإخراج الأساسية مثل الحصول على دفق الإخراج من أو فتح مقبس عميل ، نتلقى استثناءات مثل

java.io.IOException: Value out of range

أو

java.net.SocketException: Value out of range

("القيمة خارج النطاق" هي jargon الأصلية جنبا إلى جنب ، حسنا ، كل ما أفترضه).

هل لديه أي شخص مشكلات مماثلة؟ أي الفساد I/O بينما على سبيل المثال العبث مع 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 السابق (!) ، ولكن السلوك نفسه مع مآخذ مآخذ سيئ حقًا.

هل كانت مفيدة؟

المحلول 2

تحديث: كانت المشكلة ناتجة عن زائفة .so مكتبة.

نصائح أخرى

يبدو أن رمز الخطأ 4034 يشير إلى أن خادمًا معينًا لا يعمل في المجموعة غير المتوقفة. هل أنت متأكد من أن نظامك هو الإعداد بشكل صحيح؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top