Sto sviluppando un'applicazione Java EE senza interfaccia http: utilizza solo MQTT per l'invio/ricezione di dati.Ambiti CDI nell'applicazione non http
Mi chiedo se CDI @SessionScoped
e @RequestScoped
si applicano a questo scenario o devo definire ambiti personalizzati per gestire le richieste del cliente.
Modifica
ho provato una semplice applicazione che inietta un @SessionScoped
o @RequestScoped
fagiolo nel MQTT ricevere richiamata e ho ottenuto un'eccezione dicendo che non ho contesto attivo.
È possibile attivare un contesto a livello di codice in modo che il ciclo di vita dei bean segua l'ambito scelto?
PS: quando posto la domanda che non ero troppo pigro per fare quel semplice test ma ero curiosi di approfondire in teoria portata CDI ... ed ancora io sono ..
grazie per la tua risposta! Ho letto la documentazione che hai collegato e ho trovato alcune informazioni utili. Sfortunatamente, non ho ancora capito come dovrei usare il 'BoundConversationContext': dovrei iniettare il contesto nel bean Voglio avere un ambito di richiesta e" copiare - incollare "il codice che hai postato? dovrei chiamare questi metodi dal mio codice o sono usati dal container? dovrei gestire il 'requestDataStore'? –
È necessario associare e attivare il contesto dell'ambito prima di accedere al bean Scoped e disattivarlo dopo. Ciò significa che devi farlo fuori dal tuo fagiolo. Nel tuo caso puoi ad esempio creare un contesto di conversazione se qualche tipo di dati pari o ricevuti e disattivarli dopo il timeout. – temaleva