I/O Exception occured on socket

oraclin25

Erfahrenes Mitglied
Hallo zusammen,

den Thread habe ich eigentlic im Subforum Java EE erstellt, aber leider keine Hilfestellungen, vielleicht wird in dem Forum nicht so frequentiert geschaut wie in diesem, daher stelle ich es hier nochmal, entschuldigt bitte, wenn ich die Forenregeln gestoßen habe?:p

ich habe eine wirklich sehr simple EJB-Applikation gebaut, wo eine main-Methode als Client dient. Eine Bean habe geschrieben, die lediglich System.out.println Hi, I am Mr Bean ausspuckt.

Ich führe diese Applikation unter Eclipse Run As Application.

Den Applikationsserver habe ich entsprechend gestartet, alles fein.

Die Applikation wurde vom ersten Blick erfolgreich ausgeführt, das heißt, in der Konsole sah ich wirklich die Ausgabe vom System.out.println der EJBean. Allerdings dauerte dieses Erfolgserlebnis lediglich eine Sekunde. Danach bekam ich folgende Fehler zu Gesicht:

Code:
<17.12.2013 15:43 Uhr MEZ> <Error> <Socket> <BEA-000403> <IOException occurred on socket: Socket[addr=/127.0.0.1,port=53000,localport=7001]

java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen.

java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen

at sun.nio.ch.SocketDispatcher.read0(Native Method)

at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)

at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)

at sun.nio.ch.IOUtil.read(IOUtil.java:197)

at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)

Truncated. see log file for complete stacktrace

Vielleicht ist es einfacher, wenn ich den Quellcode bereitstelle:
Code:
public class Main {
 
    public static void main(String[] args) {
        
        Properties p = new Properties();
        
        p.put(Context.PROVIDER_URL, "t3://localhost:7001");
        p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        
        try {
            Context ctx = new InitialContext(p);
            
            TheBeanRemote bean = (TheBeanRemote) ctx.lookup("MrBean#com.coolstory.TheBeanRemote");
            
            System.out.println("Main.main(): " + bean.sayHi());
            
        } catch (NamingException e) {
            e.printStackTrace();
        }
 
    }
 
}

Das ist also der Code am Frontend(Client).

Der Code vom Bean sieht so aus:
Code:
@Stateless(mappedName = "MrBean")
public class TheBean implements TheBeanRemote {
 
    /**
     * Default constructor. 
     */
    public TheBean() {
    }
 
    @Override
    public String sayHi() {
        return "Hi I am Mr Bean";
    }
 
}

Nach der Ausführung soll ja lediglich folgendes ausgegeben werden:
Main.main(): Hi I am Mr Bean

Wie gesagt, diese Ergebniszeile kommt, aber bleibt nur eine halbe Sekunde in meiner Eclipse-Konsole, danach taucht die I/O-Exception.

Meine Fragen:
1. Hat jemand vielleicht eine Idee, warum hier eine I/O-Exception geworfen wurde? Ich weiss leider nicht, an welcher Stelle in main-Methode das Exception geworfen wird.
2. Es handelt sich offensichtlich um Socket-Fehler, ich habe dazu ein bisschen gegoogelt, leider ist der Lösungsvorschlag sehr schwamming:
BEA-000403

Error: IOException occurred on socket: socket\n ioe.


Description
An IO exception was encountered while reading from the socket.

Cause
An unexpected IO exception was encountered while performing IO for the socket.

Action
Check network connectivity. If situation persists after environmental issues are resolved, contact Oracle Customer Support

Vielleicht könnt Ihr mir Hilfestellungen, wie ich hier weiter recherchiere. Vielen Dank.

Viele Grüße aus Rheinland,

Eure Ratna:)
 
Hallo zusammen,

ich habe den Thread gepfuscht auf erledigt gesetzt --> ich hab den Applikationsserver auf Glassfish gewechselt, es funktionert einwandfrei, es wurde keine Exception mehr geworfen. Seltsam.

Viele Grüße aus Rheinland,

Eure Ratna:)
 
Zurück