When a service is de-serialize, instance has to be finded on Container. This is done by SerializableService class.
It's the role of ProxyGenerator to introduce the writeReplace method that build SerializableService instance.
But this is done only if class does not implement Serializable.
As a consequence, services instances are serializable field on serializable class but are declared not serializable.
(second, it use ASM to generate bytecode, which is quite error prone and not reliable on different java version)
So, another way would to add a parent class on Services that define method writeReplace :