2013-03-22 14 views
5

Şu anda struts2 ile bir çalışma yapıyorum ve bu hata aniden ortaya çıkıyor. Bazı nesnelerimin önbelleği çalışmıyor.Güncelleştirmeden sonra Struts2 NotSerializableException açılamıyor 2.312

JBoss 5 ve Struts2 kullanımı: Struts2 çekirdekli 2.3.4.1.jar xwork çekirdekli 2.3.4.1.jar

yığın izlemesi burada: http://pastebin.com/QpPV01wX

bu bir parçası olduğunu :

java.io.NotSerializableException: com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164) 
     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) 
     at com.opensymphony.xwork2.inject.util.ReferenceMap.writeObject(ReferenceMap.java:595) 
     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.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.HashMap.writeObject(HashMap.java:1001) 
     at sun.reflect.GeneratedMethodAccessor413.invoke(Unknown Source) 
     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.writeObject(ObjectOutputStream.java:330) 
     at java.util.HashMap.writeObject(HashMap.java:1001) 
     at sun.reflect.GeneratedMethodAccessor413.invoke(Unknown Source) 
     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.writeObject(ObjectOutputStream.java:330) 
     at org.jboss.ha.framework.server.SimpleCachableMarshalledValue.serialize(SimpleCachableMarshalledValue.java:271) 
     at 

Önerilere bayılırım veya yanlış yaptığım bir şey olabilir.

önceden Çok teşekkür ederim benim struts.xml kullanılan ve sorun bitti belirteç oturum önleme kaldırmak için çalıştı

GÜNCELLEME

**. Yine de, belirteci kullanırsam neden yanlış gittiğini bilmiyorum. En azından benim durumumda, jeton oturumu durdurucusunu kaldırarak çözülür.

Ben

<interceptor-ref name="tokenSession"> 
    <param name="excludeMethods">list</param> 
    <param name="includeMethods">save,update</param> 
</interceptor-ref> 
+0

Bazı eski sürümlerden 2.3.x'e geçiş yaptınız mı? Bu sorunu zaten gördüm ama kaynağı tanımlayamıyorum: \ struts2 problemi gibi göründüğü gibi ne tür eylemler/sonuçlar kullanıyorsunuz (execAndWait). –

+0

Evet, en son 2.3.12'ye başka bir ilgili kütüphaneyle de geçiş yaptım. Sahip olduğum işlemler kullanıcı kaynağını güncelliyor. Ve sorun ondan sonra artar. Ancak, kullanıcı yine de güncellenir. Herhangi bir öneri belki? – daimagine

+0

@ LukaszLenart, burada sorunun nedenini düşündüğüm yerdeydi. '11: 02: 02.076 HATA [CommandAwareRpcDispatcher] java.io.NotSerializableException: com.opensymphony.xwork2.inject.ContainerImpl $ ConstructorInjector 11: 02:. 02076 WARN [/ ofis] __ oturumu koY6yLeuKfHSBdQUfOJXBg çoğaltılamadı node2' ve com.opensymphony.xwork2.inject.ContainerImpl yanlış değilse Seri hale getirilemez – daimagine

cevap

3

Eğer java.io.Serializable uygulamak gerekmez cache veya oturumuna Nesneleri koyduk görünüyor struts.xml aşağıdaki satırı kaldırın.

+0

Teşekkür @vhunsicker. Tüm oturum nesnesinin serileştirilebildiğinden emin olmak için bazı yeniden kontroller yaptım. Nerede eksik olduğumu söyleyebilir misin? – daimagine

+0

Oturum nesneleriniz, Kapsayıcı'ya başvuru gibi seri hale getirilemeyen alanlara sahip olmadığından emin olun. – rees

+0

Evet sağ. Seri hale getirilebilir öğeler, yalnızca kendilerine ait Seriyi uygulayan ilkel öznitelikler veya öznitelikler içermelidir. Bazı öznitelikler serileştirilmemeli, bunları geçici hale getirebilirsiniz. – vhunsicker

0

Aynı sorunla da karşılaşıyorum, ama finnyanı bulmak struts2-spring-plugin-2.0.14.jar benim struts2-core.2.2.3.jar ile eşleşmiyor, bu yüzden struts2-spring- yerine ilgili sürümü ile eklenti ve diğer insanlara ~

0

için bu yararlı ~ iyi şanslar ~ umut çalışıyor ben tokenSessionInterceptor yerine tokenInterceptor geçiş yaparak bu sorun çözüldü. Olguların çoğu için tokenInterceptor tamam.

0

Bu soruna struts-2.3.32 ile de girdi. com.opensymphony.xwork2.DefaultActionInvocation sınıfının Eylem'e bir referansı vardır.
Eğer eyleminiz com.opensymphony.xwork2.ActionSupport'u uzatırsa, o zaman com.opensymphony.xwork2.inject.Container'a başvurur.
Çözüm, bağımlılığı ActionSupport'dan kaldırmaktır.

+0

Hangi S2 sürümünü kullanıyorsunuz? –