Sto usando Spring e JSF 2 per creare un'applicazione web. Gli oggetti di business sono conservati nel contenitore primavera, e li ho iniettare nelle Fagioli gestito utilizzando il @ManagedProperty, in questo modo:Come re-iniettare un transitorio @ManagedProperty durante la deserializzazione?
@ManagedBean
@ViewScoped
public class SomeMB implements Serializable {
private static final long serialVersionUID = 1L;
@Getter @Setter
@ManagedProperty("#{someService}")
private SomeService someService;
// ...
Il problema è che io continuo a ricevere un NotSerializableException
per una classe da Spring (ServiceLocatorFactoryBean) che viene utilizzato dal bean SomeService.
Se lo faccio transient
, come posso fare la re-iniezione di esso dopo la deserializzazione?
Oppure, quali sarebbero altri modi per risolvere questo problema?
Ho letto diverse altre domande simili qui, ma non ho trovato nessuna che si occupasse esattamente di questo problema.
FYI: questo problema non esiste quando si utilizza solo EJB di Java EE anziché Spring. – BalusC
@BalusC Sì, ne ho letto in altre domande, sfortunatamente non ne so abbastanza sugli EJB da usarlo ancora (e non so se potrei convincere i colleghi a lasciarmi provare in questo progetto) . Potresti indicarmi una buona risorsa per conoscerla, btw? – elias
Non è così difficile. Assicurati che il tuo contenitore supporti già EJB (Glassfish, JBoss, Weblogic, ecc.). Annota la classe di servizio con '@ Stateless' o' @ Stateful' e inseriscilo con '@ EJB'. Questo è tutto. Nessun getter/setter richiesto btw. – BalusC