Hallo,
ich bekomme immer folgende Fehlermeldung:
Dez 01, 2013 4:37:27 PM Remote.RemoteAsync$10 run
SEVERE: null
Exceptions.SasInternalException: Invalid operation: result set closed
at Controller.User.User.loadDepots(User.java:136)
at Controller.Remote.RemoteServiceImpl.getDepot(RemoteServiceImpl.java:187)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:273)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:251)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:160)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
at com.sun.proxy.$Proxy7.getDepot(Unknown Source)
at Remote.RemoteAsync$10.run(RemoteAsync.java:420)
at java.lang.Thread.run(Thread.java:722)
Dies ist die Methode die auf die DepotDAO Klasse zugreift
Die Methode getUserDepots liefert mir die Depots zu einem User. Hier tritt der Fehler scheinbar auf. Leider weiss ich nicht warum. Er tritt auch nicht immer auf. Nur ab und an. Das jeweilige Depot wird trotz Fehlermeldung geladen. Ich sehe einfach keinen Fehler. Scheinbar ist das Resultset geschlossen und es wird noch zugegriffen. Kann mir Jemand helfen?
ich bekomme immer folgende Fehlermeldung:
Dez 01, 2013 4:37:27 PM Remote.RemoteAsync$10 run
SEVERE: null
Exceptions.SasInternalException: Invalid operation: result set closed
at Controller.User.User.loadDepots(User.java:136)
at Controller.Remote.RemoteServiceImpl.getDepot(RemoteServiceImpl.java:187)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:273)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:251)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:160)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
at com.sun.proxy.$Proxy7.getDepot(Unknown Source)
at Remote.RemoteAsync$10.run(RemoteAsync.java:420)
at java.lang.Thread.run(Thread.java:722)
Java:
public boolean loadDepots() throws SasInternalException {
try {
depotdao = new DepotDAO();
depots = depotdao.getUserDepots(this);
} catch (SasInternalException ex) {
throw new SasInternalException(ex.getMessage());
}
return true;
}
Dies ist die Methode die auf die DepotDAO Klasse zugreift
Java:
public List<Depot> getUserDepots(User user) throws SasInternalException {
//ArrayList die die Depots enthält
ArrayList<Depot> depotList = new ArrayList<Depot>();
//Ergebnis für die SQL Abfrage
ResultSet result = null;
//Verbindung zur Datenbank holen
Connection connection = dbm.getConnection();
//Statement das die SQL Abfrage beinhaltet
PreparedStatement statement = null;
try {
//SQL String mit wildcards wird vorbereitet
statement = connection.prepareStatement(
"select * from \"Depot\" where EMAIL = ?");
//Wildcards werden ersetzt
statement.setString(1, user.getEmail());
//Statement wird ausgeführt
result = statement.executeQuery();
//Alle gefundenen Datensätze werden eingelesen
while (result.next()) {
Depot depot = read(result);
depot.setLoadedFromDB(true);
//Der Depotliste wird das Depot hinzugefügt
depotList.add(depot);
}
//Fehlerbehandlung
} catch (SQLException ex) {
Logger.getLogger(DepotDAO.class.getName()).log(Level.SEVERE, null, ex);
throw new SasInternalException(ex.getMessage());
} finally {
//Verbindung zur Datenbank wird geschlossen
dbm.disconnect();
}
return depotList;
}
Die Methode getUserDepots liefert mir die Depots zu einem User. Hier tritt der Fehler scheinbar auf. Leider weiss ich nicht warum. Er tritt auch nicht immer auf. Nur ab und an. Das jeweilige Depot wird trotz Fehlermeldung geladen. Ich sehe einfach keinen Fehler. Scheinbar ist das Resultset geschlossen und es wird noch zugegriffen. Kann mir Jemand helfen?