2010-06-17 3 views
1

Environnement: JBoss 5.1.0, 2.2.0 JBoss Seamapplication lance NotSerializableException lorsqu'il est exécuté sur un cluster jboss

Tout en essayant d'obtenir mon application en cours d'exécution dans un environnement en cluster après la connexion, je reçois l'exception suivante. Après la connexion, nous essayons de stocker le currentUser dans le contexte de la session jboss seam.

java.io.NotSerializableException: org.jboss.seam.util.AnnotatedBeanProperty 

Comment résoudre ceci?

java.io.NotSerializableException: org.jboss.seam.util.AnnotatedBeanProperty 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156) 

     at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java 
:1509) 
     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:14 
74) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav 
a:1392) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) 

     at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java 
:1509) 
     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:14 
74) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav 
a:1392) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) 

     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) 
     at java.util.ArrayList.writeObject(ArrayList.java:570) 
     at sun.reflect.GeneratedMethodAccessor339.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:94 
5) 
     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:14 
61) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav 
a:1392) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) 

     at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java 
:1509) 
     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:14 
74) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav 
a:1392) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) 

     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) 
     at java.util.HashMap.writeObject(HashMap.java:1001) 
     at sun.reflect.GeneratedMethodAccessor338.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:94 
5) 
     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:14 
61) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav 
a:1392) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) 

     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) 
     at org.jboss.ha.framework.server.SimpleCachableMarshalledValue.serialize 
(SimpleCachableMarshalledValue.java:271) 
     at org.jboss.ha.framework.server.SimpleCachableMarshalledValue.writeExte 
rnal(SimpleCachableMarshalledValue.java:252) 
     at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java: 
1421) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav 
a:1390) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) 

     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) 
     at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarsh 
aller200.java:460) 
     at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarsh 
aller300.java:47) 
     at org.jboss.cache.marshall.CacheMarshaller200.marshallMap(CacheMarshall 
er200.java:569) 
     at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarsh 
aller200.java:370) 
     at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarsh 
aller300.java:47) 
     at org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMars 
haller200.java:519) 
     at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarsh 
aller200.java:314) 
     at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarsh 
aller300.java:47) 
     at org.jboss.cache.marshall.CacheMarshaller200.marshallCommand(CacheMars 
haller200.java:519) 
     at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarsh 
aller200.java:314) 
     at org.jboss.cache.marshall.CacheMarshaller300.marshallObject(CacheMarsh 
aller300.java:47) 
     at org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(Cach 
eMarshaller200.java:191) 
     at org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(Cach 
eMarshaller200.java:136) 
     at org.jboss.cache.marshall.VersionAwareMarshaller.objectToBuffer(Versio 
nAwareMarshaller.java:182) 
     at org.jboss.cache.marshall.VersionAwareMarshaller.objectToBuffer(Versio 
nAwareMarshaller.java:52) 
     at org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.ca 
ll(CommandAwareRpcDispatcher.java:369) 
     at org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.ca 
ll(CommandAwareRpcDispatcher.java:341) 
     at org.jboss.cache.util.concurrent.WithinThreadExecutor.submit(WithinThr 
eadExecutor.java:82) 
     at org.jboss.cache.marshall.CommandAwareRpcDispatcher.invokeRemoteComman 
ds(CommandAwareRpcDispatcher.java:206) 
     at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java: 
748) 
     at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java: 
716) 
     at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java: 
721) 
     at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpc 
Interceptor.java:161) 
     at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpc 
Interceptor.java:135) 
     at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpc 
Interceptor.java:107) 
     at org.jboss.cache.interceptors.ReplicationInterceptor.handleCrudMethod(
ReplicationInterceptor.java:160) 
     at org.jboss.cache.interceptors.ReplicationInterceptor.visitPutDataMapCo 
mmand(ReplicationInterceptor.java:113) 
     at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDat 
aMapCommand.java:104) 
     at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterc 
eptor(CommandInterceptor.java:116) 
     at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(Co 
mmandInterceptor.java:131) 
     at org.jboss.cache.commands.AbstractVisitor.visitPutDataMapCommand(Abstr 
actVisitor.java:60) 
     at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDat 
aMapCommand.java:104) 
     at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterc 
eptor(CommandInterceptor.java:116) 
     at org.jboss.cache.interceptors.TxInterceptor.attachGtxAndPassUpChain(Tx 
Interceptor.java:301) 
     at org.jboss.cache.interceptors.TxInterceptor.handleDefault(TxIntercepto 
r.java:283) 
     at org.jboss.cache.commands.AbstractVisitor.visitPutDataMapCommand(Abstr 
actVisitor.java:60) 
     at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDat 
aMapCommand.java:104) 
     at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterc 
eptor(CommandInterceptor.java:116) 
     at org.jboss.cache.interceptors.CacheMgmtInterceptor.visitPutDataMapComm 
and(CacheMgmtInterceptor.java:97) 
     at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDat 
aMapCommand.java:104) 
     at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterc 
eptor(CommandInterceptor.java:116) 
     at org.jboss.cache.interceptors.InvocationContextInterceptor.handleAll(I 
nvocationContextInterceptor.java:178) 
     at org.jboss.cache.interceptors.InvocationContextInterceptor.visitPutDat 
aMapCommand(InvocationContextInterceptor.java:64) 
     at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDat 
aMapCommand.java:104) 
     at org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain 
.java:287) 
     at org.jboss.cache.invocation.CacheInvocationDelegate.invokePut(CacheInv 
ocationDelegate.java:705) 
     at org.jboss.cache.invocation.CacheInvocationDelegate.put(CacheInvocatio 
nDelegate.java:519) 
     at org.jboss.ha.cachemanager.CacheManagerManagedCache.put(CacheManagerMa 
nagedCache.java:277) 
     at org.jboss.web.tomcat.service.session.distributedcache.impl.jbc.JBossC 
acheWrapper.put(JBossCacheWrapper.java:148) 
     at org.jboss.web.tomcat.service.session.distributedcache.impl.jbc.Abstra 
ctJBossCacheService.storeSessionData(AbstractJBossCacheService.java:405) 
     at org.jboss.web.tomcat.service.session.ClusteredSession.processSessionR 
eplication(ClusteredSession.java:1166) 
     at org.jboss.web.tomcat.service.session.JBossCacheManager.processSession 
Repl(JBossCacheManager.java:1937) 
     at org.jboss.web.tomcat.service.session.JBossCacheManager.storeSession(J 
BossCacheManager.java:309) 
     at org.jboss.web.tomcat.service.session.InstantSnapshotManager.snapshot(
InstantSnapshotManager.java:51) 
     at org.jboss.web.tomcat.service.session.ClusteredSessionValve.handleRequ 
est(ClusteredSessionValve.java:147) 
     at org.jboss.web.tomcat.service.session.ClusteredSessionValve.invoke(Clu 
steredSessionValve.java:94) 
     at org.jboss.web.tomcat.service.session.LockingValve.invoke(LockingValve 
.java:62) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica 
torBase.java:433) 
     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv 
e.java:92) 
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.proce 
ss(SecurityContextEstablishmentValve.java:126) 
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invok 
e(SecurityContextEstablishmentValve.java:70) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j 
ava:127) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j 
ava:102) 
     at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedC 
onnectionValve.java:158) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal 
ve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav 
a:330) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java 
:829) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce 
ss(Http11Protocol.java:598) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:44 
7) 
     at java.lang.Thread.run(Thread.java:619) 
16:38:35,789 ERROR [CommandAwareRpcDispatcher] java.io.NotSerializableException: 
org.jboss.seam.util.AnnotatedBeanProperty 
16:38:35,789 WARN [/a12] Failed to replicate session YwBL69cG-zdm0m5CvzNj3Q__ 
java.lang.RuntimeException: Failure to marshal argument(s) 
     at org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.ca 
ll(CommandAwareRpcDispatcher.java:374) 
     at org.jboss.cache.marshall.CommandAwareRpcDispatcher$ReplicationTask.ca 
ll(CommandAwareRpcDispatcher.java:341) 
     at org.jboss.cache.util.concurrent.WithinThreadExecutor.submit(WithinThr 
eadExecutor.java:82) 
     at org.jboss.cache.marshall.CommandAwareRpcDispatcher.invokeRemoteComman 
ds(CommandAwareRpcDispatcher.java:206) 
     at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java: 
748) 
     at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java: 
716) 
     at org.jboss.cache.RPCManagerImpl.callRemoteMethods(RPCManagerImpl.java: 
721) 
     at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpc 
Interceptor.java:161) 
     at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpc 
Interceptor.java:135) 
     at org.jboss.cache.interceptors.BaseRpcInterceptor.replicateCall(BaseRpc 
Interceptor.java:107) 
     at org.jboss.cache.interceptors.ReplicationInterceptor.handleCrudMethod(
ReplicationInterceptor.java:160) 
     at org.jboss.cache.interceptors.ReplicationInterceptor.visitPutDataMapCo 
mmand(ReplicationInterceptor.java:113) 
     at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDat 
aMapCommand.java:104) 
     at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterc 
eptor(CommandInterceptor.java:116) 
     at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(Co 
mmandInterceptor.java:131) 
     at org.jboss.cache.commands.AbstractVisitor.visitPutDataMapCommand(Abstr 
actVisitor.java:60) 
     at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDat 
aMapCommand.java:104) 
     at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterc 
eptor(CommandInterceptor.java:116) 
     at org.jboss.cache.interceptors.TxInterceptor.attachGtxAndPassUpChain(Tx 
Interceptor.java:301) 
     at org.jboss.cache.interceptors.TxInterceptor.handleDefault(TxIntercepto 
r.java:283) 
     at org.jboss.cache.commands.AbstractVisitor.visitPutDataMapCommand(Abstr 
actVisitor.java:60) 
     at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDat 
aMapCommand.java:104) 
     at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterc 
eptor(CommandInterceptor.java:116) 
     at org.jboss.cache.interceptors.CacheMgmtInterceptor.visitPutDataMapComm 
and(CacheMgmtInterceptor.java:97) 
     at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDat 
aMapCommand.java:104) 
     at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterc 
eptor(CommandInterceptor.java:116) 
     at org.jboss.cache.interceptors.InvocationContextInterceptor.handleAll(I 
nvocationContextInterceptor.java:178) 
     at org.jboss.cache.interceptors.InvocationContextInterceptor.visitPutDat 
aMapCommand(InvocationContextInterceptor.java:64) 
     at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDat 
aMapCommand.java:104) 
     at org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain 
.java:287) 
     at org.jboss.cache.invocation.CacheInvocationDelegate.invokePut(CacheInv 
ocationDelegate.java:705) 
     at org.jboss.cache.invocation.CacheInvocationDelegate.put(CacheInvocatio 
nDelegate.java:519) 
     at org.jboss.ha.cachemanager.CacheManagerManagedCache.put(CacheManagerMa 
nagedCache.java:277) 
     at org.jboss.web.tomcat.service.session.distributedcache.impl.jbc.JBossC 
acheWrapper.put(JBossCacheWrapper.java:148) 
     at org.jboss.web.tomcat.service.session.distributedcache.impl.jbc.Abstra 
ctJBossCacheService.storeSessionData(AbstractJBossCacheService.java:405) 
     at org.jboss.web.tomcat.service.session.ClusteredSession.processSessionR 
eplication(ClusteredSession.java:1166) 
     at org.jboss.web.tomcat.service.session.JBossCacheManager.processSession 
Repl(JBossCacheManager.java:1937) 
     at org.jboss.web.tomcat.service.session.JBossCacheManager.storeSession(J 
BossCacheManager.java:309) 
     at org.jboss.web.tomcat.service.session.InstantSnapshotManager.snapshot(
InstantSnapshotManager.java:51) 
     at org.jboss.web.tomcat.service.session.ClusteredSessionValve.handleRequ 
est(ClusteredSessionValve.java:147) 
     at org.jboss.web.tomcat.service.session.ClusteredSessionValve.invoke(Clu 
steredSessionValve.java:94) 
     at org.jboss.web.tomcat.service.session.LockingValve.invoke(LockingValve 
.java:62) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica 
torBase.java:433) 
     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv 
e.java:92) 
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.proce 
ss(SecurityContextEstablishmentValve.java:126) 
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invok 
e(SecurityContextEstablishmentValve.java:70) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j 
ava:127) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j 
ava:102) 
     at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedC 
onnectionValve.java:158) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal 
ve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav 
a:330) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java 
:829) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce 
ss(Http11Protocol.java:598) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:44 
7) 
     at java.lang.Thread.run(Thread.java:619) 

Répondre

0

Peut-être que vous devez implement Serializable sur vos cours

+0

Nous avons une interface Serializable sur toutes nos classes, toujours pas sûr de ce qui est la raison derrière cette problème. – Achaius

+0

Est-ce seulement dans l'environnement en cluster que cette erreur se produit? Pouvez-vous montrer comment vous stockez le currentUser. –

0

Je sais que cette question est vraiment vieux, et que le développement du cadre Seam est arrêté. Mais dans le cas des systèmes existants où Seam est vraiment utilisé, voici la raison de l'exception:

Ce fut une known bug dans Seam 2.2.2.Final, il applique aussi 2.2.0:

changements de classe nécessaires pour faire JpaIdentityStore clusterable (voir Patch.diff.txt):
src/main/org/jboss/couture/sécurité/autorisation/EntityIdentifierStrategy.java
src/main/org/jboss/couture/sécurité src/main/org/jboss/seam/security/permission/PermissionMetadata.java src/main/org/jboss/couture/sécurité/autorisation/ClassIdentifierStrategy.java
src/main/org/jboss/couture/util/AnnotatedBeanProperty.java

Il est donc pas un bogue dans votre code, mais dans le cadre.

La façon de résoudre ceci est, bien sûr, d'utiliser Seam 2.2.2.Final ou supérieur, ou de le patcher vous-même.

Un rapide coup d'oeil à la Seam 2 source code en cours pour la classe vérifie que le bug a été corrigé:

public class AnnotatedBeanProperty<T extends Annotation> implements Serializable 
{ 
    private static final long serialVersionUID = 2508430507136805635L; 
    . 
    . 
    . 
} 
Questions connexes