Java: IOException после обновления сервера - PullRequest
0 голосов
/ 10 января 2012

Мы только что обновили наш сервер с Sun под управлением Solaris 9, 32-битный. (установлен в 2005 году) на новый CentOS 5, (linux) на 64 бит.

Самая новая версия Java - 1.6.0_20 (но мы больше не можем получить доступ к информации о более старой версии Java).

Часть Java-апплета (OPMClient) начинает выдавать IOExeption:

import java.applet.*;
import java.awt.*;
import java.net.*;
import java.io.*;
import java.util.*;

public class OPMClient extends Applet {
    ...
    public static final int PORT = 8888;
    MineCanvas minecanvas;
    ...
    public void clientSend() {
    try {
        s = new Socket(this.getCodeBase().getHost(), PORT);
        in = new DataInputStream(s.getInputStream());
        out = new DataOutputStream(s.getOutputStream());
        listener = new SolutionListener(in, minecanvas);
    }
    catch (IOException e) {e.printStackTrace();} //showStatus("IOException in clientSend()");}
    ...
    }        

    public boolean action(Event e, Object arg) {
    ...
    if (arg.equals("Submit")) {
    if (action(null, "Update Grid")) {
        minecanvas.Submit();
    } else {
        return true;
    }
}
     ...
}

class MineCanvas extends Canvas {
    ...
    public void Submit() {
    if (position == -1) {
        errorString = "No ore has been entered!";
        mode = ERROR;
        repaint();
    } else {
        ComputeGridValue();
        parent.clientSend();
    }
}
    ...
   }

Мы пытались понять, почему это происходит, но после нескольких часов работы над этим, но безуспешно. Может ли кто-нибудь помочь нам решить эту проблему? Трассировка стека ниже

java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at OPMClient.clientSend(OPMClient.java:128)
at MineCanvas.Submit(OPMClient.java:423)
at OPMClient.action(OPMClient.java:118)
at java.awt.Component.handleEvent(Unknown Source)
at java.awt.Component.postEvent(Unknown Source)
at java.awt.Component.postEvent(Unknown Source)
at java.awt.Component.postEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException
at OPMClient.clientSend(OPMClient.java:138)
at MineCanvas.Submit(OPMClient.java:423)
at OPMClient.action(OPMClient.java:118)
at java.awt.Component.handleEvent(Unknown Source)
at java.awt.Component.postEvent(Unknown Source)
at java.awt.Component.postEvent(Unknown Source)
at java.awt.Component.postEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Будет высоко ценится. П.С .: Надеюсь, это не очевидная проблема.

С уважением, Ян

1 Ответ

0 голосов
/ 10 января 2012

Какая конкретная строка вызывает IOException? Не могли бы вы не поймать это, чтобы я знал? Строка "s = new Socket (this.getCodeBase (). GetHost (), PORT);" выдает его, если при создании сокета произошла ошибка ввода-вывода, возможно, потому что this.getCodeBase () имел исключение ввода-вывода (возможно, из-за неправильного URL-адреса?). Исключение IOException возникает только в части inputtream, если при создании входного потока произошла ошибка ввода-вывода, сокет закрыт, сокет не подключен или вход сокета был отключен с помощью shutdownInput (). Аналогично, это произойдет только в части outputtream, если при создании выходного потока возникнет ошибка ввода-вывода или сокет не будет подключен.

...