In my understanding of Servlet, the Servlet will be instantiated by the Container, his init() method will be called once, and the servlet will live like a singleton until the jvm is shut down.
i do not expect my servlet to be serialized, since it will be constructed new when the app server recovers or is starting up normally. the servlet should hold no session-specific members, so it does not make sense for it to be written to disk and re-instantiated.
is there a practical use for this?
my concerns are, that i put some non-serializable fields in there and then my app will mysteriously fail in a production environment where a different sort of session replication will take place.
Technically, I believe the servlet container is allowed to "passivate" the servlet object to disk, in a similar way that EJB session beans can be. So you're correct to ask the question if your app will fail due to non-serializable fields.
In practise, I've never heard of a container doing this, so it's really just legacy baggage from the bad old days of early J2EE. I wouldn't worry about it.