Inside GWT RPC: Understand and Use the Serialization Format
Below a collection of a few interesting links, which can help in understanding GWT RPC better and using it beyond its initially devised use cases. In particular:
- To have a detailed understanding of how the GWT serialization format works on the inside ("Understand the GWT Serialization Format"),
- How to consume a GWT RPC service from a Java (JSE) client ("Consume GWT RPC using a Java Client"), and
- How to generate messages in the GWT serialization format using an environment different from the GWT provided servlet ("Generate Textual Representations of Java Objects using GWTs Serialization Format")
Understand the GWT Serialization Format
This discussion provides details on the GWT serialization format, particularly by referring to this presentation. Looking at the format in detail, it indeed seems to resemble a remote method invocation protocol (RMI) rather than a sole remote procedure call protocol. This is not necessarily good, since a lot of meta-data has to be sent with every request (e.g. class on which method is to be invoked).
Consume GWT RPC using a Java Client
It appears that attempting to consume GWT RPC services from Java clients has mostly been pursued for testing purposes. However, it seems that some of the discussed libraries might be out-dated and might necessarily work with the most recent version of GWT (since the GWT serialization format can change from version to version).
Generate Textual Representations of Java Objects using GWTs Serialization Format
This article describes how data can be serialized using GWTs server side serialization and written into the initially downloaded HTML. This can speed up startup time of applications, since it leads to a reduction of RPC calls. I am not quite sure but there might have been mention of this technique in one of the Goolge IO talks on GWT performance. There can be other use cases for attempting to do the GWT serialization 'by hand', for instance if one wants to avoid using a Servlet container (tomcat, jetty) and replace it by something nicer like netty. The JavaDoc of the following classes are a good starting point to explore further how to perform GWT serialization Google Web Toolkit JavaDoc Class RPC, Restlet JavaDoc Class Object Representation