Aquí hay una buena discusión sobre el tema. Gavin King recomienda @Inject sobre @EJB para EJB no remotos.
http://www.seamframework.org/107780.lace
o
https://web.archive.org/web/20140812065624/http://www.seamframework.org/107780.lace
Re: ¿Inyectando con @EJB o @Inject?
- Nov 2009, 20:48 América / Nueva_York | Link Gavin King
Ese error es muy extraño, ya que las referencias locales EJB siempre deben ser serializables. ¿Insecto en pez de cristal, tal vez?
Básicamente, @Inject siempre es mejor, ya que:
it is more typesafe,
it supports @Alternatives, and
it is aware of the scope of the injected object.
Recomiendo contra el uso de @EJB, excepto para declarar referencias a EJB remotos.
y
Re: ¿Inyectando con @EJB o @Inject?
Noviembre de 2009, 17:42 América / Nueva_York | Link Gavin King
¿Significa @EJB mejor con EJB remotos?
Para un EJB remoto, no podemos declarar metadatos como calificadores, @Alternative, etc., en la clase bean, ya que el cliente simplemente no tendrá acceso a esos metadatos. Además, se deben especificar algunos metadatos adicionales que no necesitamos para el caso local (nombre JNDI global de lo que sea). Por lo tanto, todo eso debe ir a otro lugar: la declaración @Produces.
@EJB
funciona para inyección circular (un bean singleton y otro bean que necesitan una referencia entre ellos)? (con referencia a mi respuesta a continuación, no estoy seguro de si estoy haciendo lo correcto al cambiar a@EJB
)