Pourquoi ne HttpServlet Sérialisable?
Dans ma compréhension de la Servlet, la Servlet sera instancié par le Conteneur, son init()
méthode sera appelée une fois, et la servlet va vivre comme un singleton jusqu'à ce que la machine s'arrête.
Je ne m'attends pas mon servlet pour être sérialisé, car il sera construit de nouvelles lorsque le serveur d'application récupère ou démarre normalement. La servlet doit pas détenir la session de membres, de sorte qu'il ne fait pas de sens pour lui d'être écrites sur le disque et re-instancié.
Est-il pratique à utiliser pour cela?
Mes préoccupations, que j'ai mis quelques non sérialisable des champs à l'intérieur et puis mon application va mystérieusement échouer dans un environnement de production où une sorte différente de la réplication de session aura lieu.
Vous devez vous connecter pour publier un commentaire.
Techniquement, je crois que le conteneur de servlet est permis de "mettre en pause" la servlet objet de disque, de la même manière que les EJB session beans peuvent être. Donc vous avez raison de poser la question si votre application ne fonctionnera pas car non sérialisable champs.
Dans la pratique, je n'ai jamais entendu parler d'un conteneur de faire cela, donc c'est vraiment juste l'héritage des bagages depuis l'époque du début de J2EE. Je ne serais pas s'inquiéter à ce sujet.
<distributable />
dans web.xml.HttpServlet devrait par sérialisé sur le disque et de survivre redémarrage de conteneur de servlet. Par exemple tomcat permet de configurer drapeau qui permettent ce genre de survivre. L'option suivante est de transférer en utilisant JNDI. Ce n'est pas des ordures, il est à utiliser que dans des cas d'utilisation.
Google semble suggérer que cela a été fait afin que le conteneur auteurs ont la possibilité, s'ils le veulent.
Vous avez raison que la servlet doit pas détenir la session de membres, en fait, je pense que vous voulez tant que petit état, à tous les possibles. Si vous stockez tout soit en Session ou ServletConfig, je pense que vous seriez en mesure de survivre à la sérialisation.
Tout comme les objets de Session sont sérialisés pour survivre caches pour ceux servletcontainers donnant l'option de cluster, il y a peut être une option pour un conteneur pour le transfert d'un Servlet instance ainsi à un autre nœud de cluster ?? Je suis juste deviner ici
Serializable est utilisé comme un interface marqueur pour la session d'attributs dans l'environnement distribué.