Nuestro team de especialistas despúes de muchos días de investigación y recopilación de de datos, obtuvimos la respuesta, queremos que te sea de gran utilidad para tu plan.
Solución:
los @EJB
se usa solo para inyectar EJB y está disponible desde hace bastante tiempo. @Inject
puede inyectar cualquier bean administrado y es parte de la nueva especificación CDI (desde Java EE 6).
En casos simples, simplemente puede cambiar @EJB
para @Inject
. En casos más avanzados (por ejemplo, cuando depende en gran medida de @EJB
‘s attributes me gusta beanName
, lookup
o beanInterface
) que para usar @Inject
tendrías que definir un @Producer
campo o método.
Estos recursos pueden ser útiles para entender las diferencias entre @EJB
y @Produces
y cómo obtener lo mejor de ellos:
Blog de Antonio Gonçalves:
CDI Parte I
CDI Parte II
CDI Parte III
Documentación de JBoss Weld:
CDI y el ecosistema Java EE
Desbordamiento de pila:
Inyectar el bean @EJB según las condiciones
@Inject
puede inyectar cualquier frijol, mientras @EJB
solo puede inyectar EJB. Puede usar cualquiera para inyectar EJB, pero prefiero @Inject
En todas partes.
Actualizar: Esta respuesta puede ser incorrecta o estar desactualizada. Por favor vea los comentarios para más detalles.
cambié de @Inject
para @EJB
porque @EJB
permite la inyección circular mientras que @Inject
vomita encima.
Detalles: necesitaba @PostConstruct
llamar a un @Asynchronous
pero lo haría sincrónicamente. La única forma de realizar la llamada asincrónica era hacer que el original llamara a un método de otro bean y que devolviera la llamada al método del bean original. Para hacer esto, cada frijol necesitaba una referencia al otro, por lo tanto, circular. @Inject
falló en esta tarea mientras que @EJB
trabajó.
Comentarios y calificaciones del tutorial
Si guardas alguna desconfianza o disposición de reaccionar nuestro enunciado te recomendamos escribir un informe y con gusto lo leeremos.