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.

Reply via email to