Ok, I found my Servlet problem. For some reason I assumed that my request processing object is re-created for each request and I can safely use the object variables to store a current persist/db connection. Just realized that the object is created only once and the execute() method was overriding the persist/db connection variable whenever a new request came.
Now I can improve the client side. Thanks a million for flagging this one for me. On 11/24/12 4:15 PM, "Alexey Panteleev" <ale...@yoxel.com> wrote: > Hi Jens, > > What I get for the SQL exceptions are either this: > > com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No > operations allowed after connection closed. > > or > > com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No > operations allowed after statement closed. > > or > > java.sql.SQLException: Operation not allowed after ResultSet closed > > or > > java.lang.NullPointerException: null > > at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1133) > ~[mysql-connector-java-5.1.21.jar:na] > > All seem to relate to the db connection closed. Just trying to wrap my mind > around how exactly the connection is closed/lost if my persist thread is still > working, trying to extract the data. > > > > Thank you, > > Alexey > > On Saturday, November 24, 2012 10:44:11 AM UTC-8, Jens wrote: >> If you see SQLExceptions just because the user navigates too quickly you >> should analyse and fix your server code / database setup / querys! >> >> When you have solved this your only "problem" now is that both RPC callbacks >> will be executed once their corresponding RPC request returns and this may >> cause odd behavior in your UI if not handled. You have to detect when a user >> leaves a page and store that fact in a field (e.g. boolean isActive). Your >> callback should then check this field before executing its onSuccess() code. >> >> Using GWT Activities you would set the flag to true in Activity.start() and >> to false in Activity.stop() and Activity.cancel(). >> >> Following the documentation for GWT-RPC you could also let your methods >> return "Request" instead of "void", e.g. >> interface MyServiceAsync { >> public Request myMethod(String s, AsyncCallback<String> callback); >> } >> this allows you to cancel the request on the client side (server will still >> do its work once the request reaches the server). >> >> -- J. >> >> >> >> Am Freitag, 23. November 2012 19:04:13 UTC+1 schrieb Alexey Panteleev: >>> Hello, >>> >>> I've been struggling with this issue for a long time, maybe someone could >>> help me address this finally? >>> From time to time it happens that a user navigates to one page wich issues >>> an RPC to our server but then quickly navigates to another page which issues >>> yet another RPC to the server while the 1st call is still being processed by >>> the server. In this case I always see some kind of SQLException on the >>> server side (I guess for the 1st call) and then the client also receives an >>> unspecified Exception. >>> >>> What is the best practice for dealing with these situations? Should I be >>> canceling the 1st call before allowing the 2nd one? >>> We use gwt-dispatch, I did not find a cancel method in that framework yet. >>> Or should I not allow any new calls until the active one has not finished? >>> >>> Do you ever run into this w/ GWT? >>> >>> Thanks much, >>> Alexey -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.