Sto tentando di @Inject
un fagiolo @SessionScoped
in un filtroUtilizzando CDI iniezione in una Servlet
@WebFilter("/*")
public class IdentityFilter implements Filter, Serializable {
@Inject
private LoginUser loginUser;
...
dove LoginUser
è @SessionScoped
L'intenzione è per LoginUser per rappresentare l'utente connesso per la sessione.
Il problema è che sembra che non sto ottenendo sempre il loginUser
dalla sessione corrente, io sono sempre 'perdite' tra le sessioni come oggetto LoginUser una sessione viene condivisa con un'altra sessione. Ovviamente non va bene.
Mi chiedo se questo è dovuto al fatto che l'oggetto Filter
è un singleton o almeno riutilizzato tra le richieste e le sessioni dal contenitore (glassfish). (Destra?)
Esiste un modo migliore per ottenere l'oggetto LoginUser
per la sessione corrente senza utilizzare una proprietà sul filtro?
Potresti incollare il codice LoginUser? Se non hai un costruttore non privato senza parametri o la classe è definitiva o hai un metodo finale, non funzionerà. –
Grazie Fabricio. Penso che sia ok, si inietta così deve essere. Il problema è la condivisione ... Penso di aver trovato ciò che è sbagliato, posterò. – Jonathan