[
https://issues.jboss.org/browse/SEAMPERSIST-49?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marek Schmidt reassigned SEAMPERSIST-49:
----------------------------------------
Assignee: Stuart Douglas
I can reproduce the issue.
The problem seems to be that TransactionInterceptor injects the
TransactionExtension.
Making the TransactionExtension Serializable seems to fix the problem, but it
doesn't really make sense IMHO to make it so, as it is only used as a cache for
classLevelAnnotations...
> Seam Persistence Fails in clustered environment
> -----------------------------------------------
>
> Key: SEAMPERSIST-49
> URL: https://issues.jboss.org/browse/SEAMPERSIST-49
> Project: Seam Persistence
> Issue Type: Bug
> Affects Versions: 3.0.0.Final
> Environment: Tomcat 7.0.14 with memchached session manager, Myfaces
> 2.0.5, Weld 1.1.2-SNAPSHOT, Persistence 3.0.0.Final, Faces 3.0.1.Final, XML
> Config 3.0.0.Final, Hibernate 3.6.4
> Reporter: Thomas Andraschko
> Assignee: Stuart Douglas
> Priority: Critical
> Labels: persistence, seam
>
> Session replication fails when using Seam Persistence.
> Following exceptions occurs:
> WARNING: Cannot serialize session attribute
> org.jboss.weld.context.http.HttpSessionContext#org.jboss.weld.bean-flat-ManagedBean-TestController[@javax.enterprise.context.SessionScoped()@javax.inject.Named(value=)]{TestController.userDao[@javax.inject.Inject()];TestController.newUser[@org.jboss.seam.transaction.Transactional(value=REQUIRED)@org.jboss.seam.transaction.TransactionalInterceptorBinding()]();TestController.post[@javax.annotation.PostConstruct()]();}
> for session 488BDFEE2194D758C7B76C6E60E6BD5E-n2
> java.io.NotSerializableException:
> org.jboss.seam.transaction.TransactionExtension
> at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
> at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
> at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
> at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
> at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
> at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
> at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
> at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
> at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
> at java.util.ArrayList.writeObject(ArrayList.java:570)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
> at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
> at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
> at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
> at
> java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:422)
> at
> java.util.Collections$SynchronizedCollection.writeObject(Collections.java:1602)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
> at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
> at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
> at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
> at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
> at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
> at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
> at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
> at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
> at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
> at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
> at
> de.javakaffee.web.msm.JavaSerializationTranscoder.writeAttributes(JavaSerializationTranscoder.java:143)
> at
> de.javakaffee.web.msm.JavaSerializationTranscoder.serializeAttributes(JavaSerializationTranscoder.java:106)
> at
> de.javakaffee.web.msm.TranscoderService.serializeAttributes(TranscoderService.java:138)
> at
> de.javakaffee.web.msm.BackupSessionTask.serializeAttributes(BackupSessionTask.java:177)
> at
> de.javakaffee.web.msm.BackupSessionTask.call(BackupSessionTask.java:111)
> at
> de.javakaffee.web.msm.BackupSessionTask.call(BackupSessionTask.java:48)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> Why is it stored in the session? Can it be made serializable?
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
seam-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/seam-issues