java-ee - que - stateless java definition
¿Es posible @Inyectar un bean @RequestScoped en un EJB @Stateless? (1)
¿Es posible inyectar un bean CDI de ámbito de solicitud en un bean de sesión sin estado?
Hice una pregunta relacionada y pensé que el CDI específico @RequestScoped in @Stateless question merecía su propia publicación.
Pasando el estado entre los métodos EJB / @RequestScoped y @Stateless
También hice una pregunta similar sobre los beans JMS @MessageDriven - básicamente quiero saber lo mismo sobre @Stateless.
Absolutamente puede hacer lo que menciona y usar los frijoles @RequestScoped en un @Stateless sesión sin estado y en un bean @MessageDriven . Esta es una parte fundamental de la especificación de CDI, TCK y portátil garantizado.
Nota sobre los MDBs
@Stateless cuenta que hay una prueba para un bean @Stateless que utiliza un bean @RequestScoped , pero no hay ninguna prueba que garantice que un bean @MessageDriven puede hacer referencia a los beans @RequestScoped . Esto fue solo un descuido y ya está arreglado para el Java EE 7 TCK . Entonces, tenga en cuenta que si no funciona para el caso de MDB, puede que no sea su culpa :)
La solución sería simplemente tener su delegado MDB en un SessionBean de cualquier tipo como @Stateless , @Stateful , y @Singleton todos tienen pruebas de @RequestScoped .
Haciendo el EJB, en sí, con ámbito
Si bien @Stateless , @Singleton y @MessageDriven pueden tener referencias de ámbito inyectadas a través de @Inject , no pueden ser @RequestScoped ni ningún otro ámbito. Solo el modelo @Stateful es lo suficientemente flexible como para soportar ámbitos. En otras palabras, puede anotar la @Stateful clase de bean @Stateful como @RequestScoped , @SessionScoped , etc.
En términos simples @Stateless , @Singleton ha corregido "ámbitos". @Singleton es esencialmente @ApplicationScoped y @Stateless tal vez sería un ámbito @InvocationScoped como @InvocationScoped , si existiera. El ciclo de vida de un bean @MessageDriven es totalmente @MessageDriven del conector que lo impulsa y, por lo tanto, tampoco se le permite tener un alcance definido por el usuario.