2013-09-23 13 views
6

Java EE'de transient olarak enjekte edilen değişkenleri bildirmeli miyim?Java EE'de enjekte edilen değişkenleri geçici olarak bildirmeli miyim?

Bir FindBugs uyarısı alıyorum:

Sınıf com.playaround.HelloServlet olmayan geçici serileştirilebilir olmayan örnek alan accelerationUnit
Bu Serializable sınıf ne geçici olmayan bir ilkel örnek alanı tanımlar tanımlar, Serializable veya java.lang.Object ve Externalizable arabirimini veya readObject() ve writeObject() yöntemlerini uygulamak için görünmüyor.
Bu sınıftaki nesneler, bu alanda Serializable olmayan bir nesne saklanırsa, düzgün bir şekilde serileştirilmeyecektir.

oyunda kod şudur:

/** 
* Sample of a web service reference. 
*/ 
@WebServiceRef 
private AccelerationUnit accelerationUnit; 

Aynı soru @Resource, @Inject, sınıf AccelerationUnit tanımında ise @PersistenceUnit vb

cevap

7

Bağımlıdır;) @Inject ve diğer CDI ek açıklamaları ile JSR-299 specification bölüm 6.6'yı kontrol etmelisiniz. Orada hangi fasulyelerin "pasivasyon yeteneğine" sahip olduklarını biliyorsunuz. EJB özellikleri göre vatansız ve tekil oturum fasulye Hakkında

, onlar (ejb pasivasyon oluşmaz gibi) tefrika

Son düşünmek ve en sorunlu durum bilgisi oturumu fasulye edilemez. Etkinleştirildikten sonra tüm JavaEE kaynakları (EJB, InitialContext, SessionContext vb.) Geri yüklenir, ancak diğer seri hale getirilemeyen alanlara ve açık bağlantılara dikkat etmeniz gerekir. Dolayısıyla, IMHO'nızda, hızlandırmayı bir geçici olarak ve ejbActivate etkinliğinde geri yükleme olarak işaretlemeli veya CDI ve üretici yöntemlerini otomatik olarak alanlara enjekte etmelisiniz.

+0

Sorunu, yalnızca üzerinde çalıştığım şey olduğu için AT WebServiceRef ile sınırlamak için yeniden düzenlemeliyim. Ancak, bir AT PersistenceUnit ve AT EJB'yi bir sunucuda enjekte edersem, aynı sorunun olduğunu fark ettim, böylece genişletilebileceğini düşündüm. –

-3

, için o gibi yapmak geçerlidir:

class AccelerationUnit implements Serializable{ 
    // your code here 
    } 
+0

AccelerationUnit bir webserviceclient seri hale getirilebilir bir sınıf değil. Örnek olarak verildi. –

İlgili konular