У меня была такая же проблема в RemoteService, как эта
public List<X> getX(...);
где X - интерфейс. Единственная реализация соответствовала правилам, то есть реализует Serializable или IsSerializable, имеет конструктор по умолчанию, и все его (не временные и не финальные) поля также следуют этим правилам.
Но я продолжал получать это SerializationException, пока я не изменил тип результата с List на X [], поэтому
public X[] getX(...);
работал. Интересно, что единственным аргументом, являющимся List, а Y - интерфейс, не было никаких проблем ...