Wednesday, November 13, 2013

Re: IncompatibleRemoteServiceException after new deployment

This is always happening if you modify any serializable class that is used by any of your GWT-RPC service. A modification will change the filenames of all the *.rpc files and users that are already logged in while you do the update will still use the old hash name. The server then can not find the old *.rpc files for the old hash and will throw the above exception.

To solve this we first started to catch the exception and treated it as "app has been updated" notification which causes the app to reload. But since then we moved to a dynamic host page. That means we can now embed any data in JSON format into the host page and the app reads this data on initialization. With this in place we now add an app version to the host page and send this app version to the server on each request (HTTP header). A ServletFilter on the server checks the app version, compares it to the server version and if the client is outdated it sends back a HTTP 409 CONFLICT response with the status APP_OUTDATED. The client app checks for this response, notifies the user and reloads the app.

In addition we also reload the app if a split point could not be downloaded. This can happen sometimes after an app update, if permutation names have changed and the logged in user tries to load a split point without doing a GWT-RPC request beforehand.

So far it works pretty well for us.

-- J.

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/groups/opt_out.

No comments:

Post a Comment