Attacher un Vector à une session, ça pose un pb ? - Java - Programmation
Marsh Posté le 07-10-2002 à 17:57:20
ben Vector n'est pas serializable, et je présume que ce log vient d'un truc qui essaie pê de stocker les sessions sur disque...
Marsh Posté le 07-10-2002 à 18:03:10
--greg-- a écrit a écrit : ben Vector n'est pas serializable |
Je vote plutot pour un élément mis dans le vecteur qui n'est pas serializable.
Marsh Posté le 07-10-2002 à 18:15:23
euh ouais possible
Marsh Posté le 07-10-2002 à 18:29:53
--greg-- a écrit a écrit : je présume que ce log vient d'un truc qui essaie pê de stocker les sessions sur disque... |
exacte : tomcat est session-reboot-safe !
Marsh Posté le 07-10-2002 à 18:49:47
--greg-- a écrit a écrit : ben Vector n'est pas serializable, et je présume que ce log vient d'un truc qui essaie pê de stocker les sessions sur disque... |
Marsh Posté le 07-10-2002 à 19:28:01
HappyHarry a écrit a écrit : |
Marsh Posté le 08-10-2002 à 08:49:24
--greg-- a écrit a écrit : ben Vector n'est pas serializable, et je présume que ce log vient d'un truc qui essaie pê de stocker les sessions sur disque... |
quoted
Marsh Posté le 08-10-2002 à 08:50:46
El_Gringo a écrit a écrit : et... c'est grave docteur ? |
bin déjà y a quoi dans ton vecteur?
Marsh Posté le 08-10-2002 à 09:15:04
DarkLord a écrit a écrit : bin déjà y a quoi dans ton vecteur? |
...des instances d'une classe de ma création, qui implémente java.io.Serializable !
Marsh Posté le 08-10-2002 à 09:16:44
El_Gringo a écrit a écrit : ...des instances d'une classe de ma création, qui implémente java.io.Serializable ! |
et par hasard, ta classe n'a pas des membres non sérializable
Ceci dit qu'est ce qui justifie que tu places ces objets dans un Vecteur. Pq pas une ArrayList si le type est le même?
Marsh Posté le 08-10-2002 à 09:33:16
DarkLord a écrit a écrit : et par hasard, ta classe n'a pas des membres non sérializable Ceci dit qu'est ce qui justifie que tu places ces objets dans un Vecteur. Pq pas une ArrayList si le type est le même? |
Je sais jammais vraiment quelle collection choisir selon les cas.
Généralement, j'opte pour une Hashtable si je veux un accès par une clée, et pour un Vector qd je veux un accès par index.
Pourquoi plus une ArrayList qu'un Vector ?
Marsh Posté le 08-10-2002 à 09:34:22
El_Gringo a écrit a écrit : Je sais jammais vraiment quelle collection choisir selon les cas. Généralement, j'opte pour une Hashtable si je veux un accès par une clée, et pour un Vector qd je veux un accès par index. Pourquoi plus une ArrayList qu'un Vector ? |
et par hasard, ta classe n'a pas des membres non sérializable
Marsh Posté le 08-10-2002 à 09:44:30
DarkLord a écrit a écrit : et par hasard, ta classe n'a pas des membres non sérializable |
Y a surement une histoire comme ça, j'vais revérifier ça !
Pourquoi j'prendrais plus une ArrayList qu'un Vector alors !?
Marsh Posté le 08-10-2002 à 09:49:23
Les méthodes d'ArrayList ne sont pas synchronisées, alors que celles de Vector le sont. L'utilisation d'ArrayList est donc un peu plus efficace, et vivement recommandée, lorsqu'on n'a pas de problème de concurrence d'accès sur la liste.
La même remarque s'applique à HashMap (non synchronisée) et Hashtable (synchronisée).
Par contre, il n'y a pas d'équivalent non synchronisé à la classe Stack. Il est donc recommandé de toujours créer sa propre classe "ArrayStack" qui est un clone de Stack, sauf qu'elle hérite d'ArrayList au lieu de Vector, et qu'aucune de ses nouvelles méthodes n'est synchronisée (facile puisqu'on dispose des sources du J2SDK).
Marsh Posté le 07-10-2002 à 17:49:55
c'est pas une erreur bloquante apparement, mais dans les logs de Tomcat, ma servlet engendre plein d'exceptions comme celle-ci :
2002-10-07 17:46:23 StandardManager[/ldsweb] Cannot serialize session attribute visitor for session DD953E48BABC359BED78B4DF980454B1
java.io.NotSerializableException: java.util.Vector$1
En effet, j'attache un objet ("visitor" ) à la session, qui contient un Vector. C pas bon ? g pas l'droit de faire ça ?