I have a GWT
webapp running fine -- unless I put it behind a Marathon-LB
load-balancer and use HTTPS
.
The failure happened around a POST.
- When the webapp is not behind
Marathon-LB
, the POST would get a 200 OK. - But when it is behind
Marathon-LB
, there would be an internal server error of GWTSerializationException
, and the POST would get a 500 error.
For the failure case, the stacktrace in tomcat's server log is this. Note that the thread is https-jsse-nio-8080-exec-6
01-Feb-2018 18:43:39.863 SEVERE [https-jsse-nio-8080-exec-6] org.apache.catalina.core.ApplicationContext.log Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException: Type 'com.company.SomeGwtSerializableClass' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializ
able' and did not have a custom field serializer.For security purposes, this type will not be serialized.: instance = com.company.SomeGwtSerializableClass@6ce9a6c9
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:130)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:587)
I suspect the problem is with the certificates of trust between the docker container running Marathon-LB
and the docker container running a Tomcat
serving the webapp.
Any suggestion on how to debug this? For example, how do I know for sure that the Marathon-LB
container is trusting the webapp container?
Thanks!