J'ai un environnement dans lequel 2 tomcats en cluster à charge équilibrée pointent vers la même application. Quand ils s'exécutent sous une session collante et non partagée, ils fonctionnent correctement. Maintenant, j'applique le basculement pour Tomcat. Par exemple, si l'un échoue, l'autre gère les sessions gérées par celui qui a échoué. Et j'essaye la réplication de session en mémoire.Clustering avec session partagée - objet non erreur sérialisée
Quand j'activer cette fonction, je reçois quelques exceptions comme
org.apache.catalina.ha.session.DeltaManager requestCompleted GRAVES: demande delta Impossible de serialize pour sessionid [68930629D2318EFAC06F3D75FFA162D0.tomcat2 ] java.io.NotSerializableException: org.json.JSONObject à java.io.ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1156) à java.io.ObjectOutputStream.defaultWriteFields (ObjectOutputStream.java:1509) à java. je o.ObjectOutputStream.writeSerialData (ObjectOutputStream.java:1474) à java.io.ObjectOutputStream.writeOrdinaryObject (ObjectOutputStream.java:1392) à java.io.ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1150) à java.io. ObjectOutputStream.writeObject (ObjectOutputStream.java:326) à org.apache.catalina.ha.session.DeltaRequest $ AttributeInfo.writeExternal (DeltaRequest.java:374) à org.apache.catalina.ha.session.DeltaRequest.writeExternal (DeltaRequest.java:272) à org.apache.catalina.ha.session.DeltaRequest.serialize (DeltaRequest.java:287) à org.apache.catalina.ha.session.DeltaManager.serializeDeltaRequest (DeltaManager.java:640) à org.apache.catalina.ha.session.DeltaManager.requestCompleted (DeltaManager.java:1 120) à org.apache.catalina.ha.tcp.ReplicationValve.send (ReplicationValve.java:550) à org.apache.catalina.ha.tcp.ReplicationValve.sendMessage (ReplicationValve.java:537) à org. apache.catalina.ha.tcp.ReplicationValve.sendSessionReplicationMessage (ReplicationValve.java:519) à org.apache.catalina.ha.tcp.ReplicationValve.sendReplicationMessage (ReplicationValve.java:430) à org.apache.catalina.ha. tcp.ReplicationValve.invoke (ReplicationValve.java:363) à org.apache.catalina.ha.session.JvmRouteBinderValve.invoke (JvmRouteBinderValve.java:210) à org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter. java: 293) sur org.apache.jk.server.JkCoyoteHandler.invoke (JkCoyoteHandler.java:190) à org.apache.jk.common.HandlerRequest.invoke (HandlerRequest.java:291) à org.apache.jk.common.ChannelSocket.invoke (ChannelSocket.java:769) à org.apache.jk.common.ChannelSocket .processConnection (ChannelSocket.java:698) à org.apache.jk.common.ChannelSocket $ SocketConnection.runIt (ChannelSocket.java:891) à org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run (ThreadPool .java: 690) at java.lang.Thread.run (Thread.java:619) 11 septembre 2009 7:21:06 PM org.apache.catalina.ha.session.DeltaManager requestCompleted GRAVE: Impossible de demande de sérialisation delta pour sessionid [68930629D2318EFAC06F3D75FFA162D0.tomcat2] java.io.NotSerializab leException: org.json.JSONObject
Depuis JSON est pas sérialisés Je mets à l'intérieur d'un ArrayList avant de le mettre en session. Et cela fonctionne très bien dans un environnement de session non partagé.
Que dois-je faire pour activer le basculement? (S'il vous plaît done dire quelque chose comme ne pas enregistrer l'objet en session. Son non seulement un objet qui provoque l'erreur. Je reçois des erreurs pour d'autres objets comme la source de données, etc .. ainsi)
Merci à l'avance
Umesh
Modifier: Vous avez déjà mis en œuvre sérialisation et transitoires
public class ABC implémente Serializable {private static final longue serialVersionUID = 2007L; source de source de données transitoire statique publique;
obtenir cette erreur java.io.NotSerializableException: org.apache.tomcat.dbcp.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper ... stockage attribut 'ABC' avec une valeur NOT_SERIALIZED
Puis-je utiliser ArrayList? – Umesh
Non. Bien que ArrayList marque son tableau interne Object [] en tant que transitoire, il appelle ObjectOutputStream.writeObject (array [i]) pour chaque élément du tableau. Pourquoi ne pas créer une classe titulaire simple (struct) pour JSONObject? –