Domanda

Ehi! Sono relativamente nuovo sia con Java EE sia con Stackowerflow, per favore sii gentile :-)

Ho un sacco di dispositivi che attivano i messaggi Java da inviare ad ogni cambio di stato. Questi dispositivi sono in genere attivi per intervalli di circa 30-90 minuti. Ogni messaggio di evento contiene un ID dispositivo oltre ai dettagli dell'evento.

Centrale nella mia applicazione è un bean basato sui messaggi che si iscrive a quegli eventi. Ogni volta che ricevo un evento devo accedere al database per cercare alcune informazioni sul dispositivo.

Sarebbe assolutamente fantastico se potessi associare un bean di sessione stateful a ciascun dispositivo attivo! Se fosse stata un'applicazione Web, avrei utilizzato la sessione http per memorizzare un handle o un riferimento al bean stateful (ho ragione?). Esiste un modo per archiviarlo dal mio bean di messaggio?

È stato utile?

Soluzione

Sarebbe bello, tranne che non può essere fatto come hai spiegato. Gli MDB (e gli SLSB) sono apolidi per definizione, quindi è sicuro tenere una conversazione solo durante l'invocazione.

Alla fine potresti rompere le specifiche e creare un attributo statico da qualche parte (forse nello stesso MDB) ma questo non sarebbe certamente portatile, né scalabile.

Il mio suggerimento è di abilitare la memorizzazione nella cache a livello di JPA (per i dettagli, consultare il provider di persistenza delle preferenze), in modo da poter cercare tutti i dati necessari molto velocemente (molto velocemente). Questo è portatile e adatto ai cluster. Questo è il modo in cui lo uso nei miei progetti e ne sono molto contento.

Spero che sia d'aiuto.

Altri suggerimenti

Non mi sento a mio agio nel raccomandare prodotti specifici, ma le esigenze di indirizzo del server Terracotta non sono così?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top