It looks like OWB is trying to serialize just regular CDI bean(which is not an interceptor) as interceptor. Please note that it happens only when session is replicated second time. That bean(UserSettings) is in interceptors map of DefaultInterceptor handler with "null" key. There is screenshot of how it looks like in debugger: https://drive.google.com/file/d/0B1jOAi2N2uY8Wk5IdXZrb2J0ZTA/edit?usp=sharing
-----Ursprüngliche Nachricht----- Von: Romain Manni-Bucau [mailto:[email protected]] Gesendet: Donnerstag, 31. Oktober 2013 06:51 An: [email protected] Betreff: Re: AW: Session replication in TomEE 1.6.0-SNAPSHOT to give some details it happens when an interceptor is not serializable (see last method of https://svn.apache.org/repos/asf/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/DefaultInterceptorHandler.java) it should be easy to debug this method to see just the level upper which bean you deserialize and then identify the missing interceptor. can you try it? Romain Manni-Bucau Twitter: @rmannibucau Blog: http://rmannibucau.wordpress.com/ LinkedIn: http://fr.linkedin.com/in/rmannibucau Github: https://github.com/rmannibucau 2013/10/30 Romain Manni-Bucau <[email protected]>: > Hi > > In a war no idea, maybe active tomcat FINE logs > > Le 30 oct. 2013 19:14, <[email protected]> a écrit : > >> Hi! >> >> I have just tested replication in tomee-1.6.0-20131030.065404-219. >> OWB Bug seems to be fixed, but there is new one. >> The First replication works perfect, but after session migration to >> another node I've got following exeception: >> >> java.io.NotSerializableException: null is not serializable >> at >> org.apache.webbeans.intercept.DefaultInterceptorHandler.serializeInterceptor(DefaultInterceptorHandler.java:266) >> at >> org.apache.webbeans.intercept.DefaultInterceptorHandler.writeExternal(DefaultInterceptorHandler.java:183) >> at >> java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1443) >> at >> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1414) >> at >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) >> at >> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528) >> at >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493) >> at >> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) >> at >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) >> at >> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) >> at >> org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.writeExternal(DeltaRequest.java:392) >> at >> org.apache.catalina.ha.session.DeltaRequest.writeExternal(DeltaRequest.java:285) >> at >> org.apache.catalina.ha.session.DeltaRequest.serialize(DeltaRequest.java:299) >> at >> org.apache.catalina.ha.session.DeltaSession.getDiff(DeltaSession.java:143) >> at >> org.apache.catalina.tribes.tipis.AbstractReplicatedMap.replicate(AbstractReplicatedMap.java:426) >> at >> org.apache.catalina.ha.session.BackupManager.requestCompleted(BackupManager.java:121) >> at >> org.apache.catalina.ha.tcp.ReplicationValve.send(ReplicationValve.java:539) >> at >> org.apache.catalina.ha.tcp.ReplicationValve.sendMessage(ReplicationValve.java:526) >> at >> org.apache.catalina.ha.tcp.ReplicationValve.sendSessionReplicationMessage(ReplicationValve.java:508) >> at >> org.apache.catalina.ha.tcp.ReplicationValve.sendReplicationMessage(ReplicationValve.java:421) >> at >> org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:345) >> at >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) >> at >> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) >> at >> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) >> at >> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) >> at >> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) >> at java.lang.Thread.run(Thread.java:722) >> >> After that session replication stops working at all. Unfortunately I >> can't reproduce the issue with my sample application. Could you give >> me a clue how to reproduce this in simple app? >> >> Regards, >> Dmitry Volkov. >> >> -----Ursprüngliche Nachricht----- >> Von: Romain Manni-Bucau [mailto:[email protected]] >> Gesendet: Dienstag, 6. August 2013 12:18 >> An: [email protected] >> Betreff: Re: Session replication in TomEE 1.6.0-SNAPSHOT >> >> Hi, >> >> that's an OWB issue (no link with clustering) >> >> i'll push it over OWB list. Thanks for the report. >> >> *Romain Manni-Bucau* >> *Twitter: @rmannibucau <https://twitter.com/rmannibucau>* >> *Blog: >> **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com >> /> >> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau* >> *Github: https://github.com/rmannibucau* >> >> >> >> 2013/8/6 <[email protected]> >> >> > Hi >> > >> > There is the sample app: https://github.com/eiskonzept/tomee >> > Package the application and start two tomee instances with tomee >> > maven plugin (maven profiles "node1" and "node2"). Then open >> > /index.xhtml from application root. >> > >> > The issue can be reproduced when replicated CDI bean is intercepted >> > by CDI interceptor. >> > >> > >> > >> > -----Ursprüngliche Nachricht----- >> > Von: Romain Manni-Bucau [mailto:[email protected]] >> > Gesendet: Montag, 5. August 2013 10:10 >> > An: [email protected] >> > Betreff: Re: Session replication in TomEE 1.6.0-SNAPSHOT >> > >> > Hi >> > >> > can you reproduce it in a sample? >> > >> > *Romain Manni-Bucau* >> > *Twitter: @rmannibucau <https://twitter.com/rmannibucau>* >> > *Blog: **http://rmannibucau.wordpress.com/*< >> > http://rmannibucau.wordpress.com/> >> > *LinkedIn: **http://fr.linkedin.com/in/rmannibucau* >> > *Github: https://github.com/rmannibucau* >> > >> > >> > >> > 2013/8/5 <[email protected]> >> > >> > > I have tested replication with last 1.6.0-SNAPSHOT and got >> > > following >> > > exception: >> > > >> > > java.io.NotSerializableException: >> > > org.apache.webbeans.intercept.DefaultInterceptorHandler >> > > at >> > > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180) >> > > at >> > > >> > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java: >> > 1528) >> > > at >> > > >> > > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493) >> > > at >> > > >> > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.j >> > ava >> > :1416) >> > > at >> > > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) >> > > at >> > > java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) >> > > at >> > > >> > org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.writeExte >> > rna >> > l(DeltaRequest.java:392) >> > > at >> > > >> > org.apache.catalina.ha.session.DeltaRequest.writeExternal(DeltaRequ >> > est >> > .java:285) >> > > at >> > > >> > org.apache.catalina.ha.session.DeltaRequest.serialize(DeltaRequest. >> > jav >> > a:299) >> > > at >> > > >> > org.apache.catalina.ha.session.DeltaSession.getDiff(DeltaSession.java: >> > 143) >> > > at >> > > >> > org.apache.catalina.tribes.tipis.AbstractReplicatedMap.replicate(Ab >> > str >> > actReplicatedMap.java:424) >> > > at >> > > >> > org.apache.catalina.ha.session.BackupManager.requestCompleted(Backu >> > pMa >> > nager.java:104) >> > > at >> > > >> > org.apache.catalina.ha.tcp.ReplicationValve.send(ReplicationValve.j >> > ava >> > :539) >> > > at >> > > >> > org.apache.catalina.ha.tcp.ReplicationValve.sendMessage(Replication >> > Val >> > ve.java:526) >> > > at >> > > >> > org.apache.catalina.ha.tcp.ReplicationValve.sendSessionReplicationM >> > ess >> > age(ReplicationValve.java:508) >> > > at >> > > >> > org.apache.catalina.ha.tcp.ReplicationValve.sendReplicationMessage( >> > Rep >> > licationValve.java:421) >> > > at >> > > >> > org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve >> > .ja >> > va:345) >> > > at >> > > >> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.j >> > ava >> > :408) >> > > at >> > > >> > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHt >> > tp1 >> > 1Processor.java:1023) >> > > at >> > > >> > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.proces >> > s(A >> > bstractProtocol.java:589) >> > > at >> > > >> > org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpo >> > int >> > .java:312) >> > > at >> > > >> > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecuto >> > r.j >> > ava:1110) >> > > at >> > > >> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor. >> > java:603) >> > > at java.lang.Thread.run(Thread.java:722) >> > > >> > > -----Ursprüngliche Nachricht----- >> > > Von: Romain Manni-Bucau [mailto:[email protected]] >> > > Gesendet: Freitag, 2. August 2013 16:15 >> > > An: [email protected] >> > > Betreff: Re: Session replication in TomEE 1.6.0-SNAPSHOT >> > > >> > > Hi, >> > > >> > > just commited sthg about it, not sure it is linked but i think so. >> > > >> > > *Romain Manni-Bucau* >> > > *Twitter: @rmannibucau <https://twitter.com/rmannibucau>* >> > > *Blog: **http://rmannibucau.wordpress.com/*< >> > > http://rmannibucau.wordpress.com/> >> > > *LinkedIn: **http://fr.linkedin.com/in/rmannibucau* >> > > *Github: https://github.com/rmannibucau* >> > > >> > > >> > > >> > > 2013/8/2 <[email protected]> >> > > >> > > > Hi! >> > > > >> > > > I have just tested session replication in TomEE 1.6.0-SNAPSHOT >> > > > and got following exception: >> > > > >> > > > java.io.NotSerializableException: >> > > > org.apache.tomee.catalina.cdi.SessionNormalScopeBeanHandler$1 >> > > > at >> > > > >> > > > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180) >> > > > at >> > > > >> > > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java: >> > > 1528) >> > > > at >> > > > >> > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java: >> > 149 >> > 3) >> > > > at >> > > > >> > > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream >> > > .ja >> > > va >> > > :1416) >> > > > at >> > > > >> > > > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) >> > > > at >> > > > >> > > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java: >> > > 1528) >> > > > at >> > > > >> > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java: >> > 149 >> > 3) >> > > > at >> > > > >> > > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream >> > > .ja >> > > va >> > > :1416) >> > > > at >> > > > >> > > > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) >> > > > at >> > > > >> > > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java: >> > > 1528) >> > > > at >> > > > >> > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java: >> > 149 >> > 3) >> > > > at >> > > > >> > > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream >> > > .ja >> > > va >> > > :1416) >> > > > at >> > > > >> > > > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) >> > > > at >> > > > java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) >> > > > at >> > > > >> > > org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.writeEx >> > > ter >> > > na >> > > l(DeltaRequest.java:392) >> > > > at >> > > > >> > > org.apache.catalina.ha.session.DeltaRequest.writeExternal(DeltaRe >> > > que >> > > st >> > > .java:285) >> > > > at >> > > > >> > > org.apache.catalina.ha.session.DeltaRequest.serialize(DeltaReques >> > > t.j >> > > av >> > > a:299) >> > > > at >> > > > >> > > org.apache.catalina.ha.session.DeltaSession.getDiff(DeltaSession.java: >> > > 143) >> > > > at >> > > > >> > > org.apache.catalina.tribes.tipis.AbstractReplicatedMap.replicate( >> > > Abs >> > > tr >> > > actReplicatedMap.java:424) >> > > > at >> > > > >> > > org.apache.catalina.ha.session.BackupManager.requestCompleted(Bac >> > > kup >> > > Ma >> > > nager.java:104) >> > > > at >> > > > >> > > org.apache.catalina.ha.tcp.ReplicationValve.send(ReplicationValve >> > > .ja >> > > va >> > > :539) >> > > > at >> > > > >> > > org.apache.catalina.ha.tcp.ReplicationValve.sendMessage(Replicati >> > > onV >> > > al >> > > ve.java:526) >> > > > at >> > > > >> > > org.apache.catalina.ha.tcp.ReplicationValve.sendSessionReplicatio >> > > nMe >> > > ss >> > > age(ReplicationValve.java:508) >> > > > at >> > > > >> > > org.apache.catalina.ha.tcp.ReplicationValve.sendReplicationMessag >> > > e(R >> > > ep >> > > licationValve.java:421) >> > > > at >> > > > >> > > org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve. >> > > ja >> > > va:345) >> > > > at >> > > > >> > > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter >> > > .ja >> > > va >> > > :408) >> > > > at >> > > > >> > > org.apache.coyote.http11.AbstractHttp11Processor.process(Abstract >> > > Htt >> > > p1 >> > > 1Processor.java:1023) >> > > > at >> > > > >> > > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.proc >> > > ess >> > > (A >> > > bstractProtocol.java:589) >> > > > at >> > > > >> > > org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEnd >> > > poi >> > > nt >> > > .java:310) >> > > > at >> > > > >> > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecu >> > > tor >> > > .j >> > > ava:1110) >> > > > at >> > > > >> > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor. >> > > java:603) >> > > > at java.lang.Thread.run(Thread.java:722) >> > > > >> > > > Tested application uses CDI, CODI and EJB 3.0 Stateless beans. >> > > > >> > > > Best regards, >> > > > Dmitry Volkov >> > > > >> > > > >> > > > >> > > >> >
