Aqui está uma boa discussão sobre o tópico. Gavin King recomenda @Inject sobre @EJB para EJBs não remotos.
http://www.seamframework.org/107780.lace
ou
https://web.archive.org/web/20140812065624/http://www.seamframework.org/107780.lace
Re: Injetar com @EJB ou @Inject?
- Nov 2009, 20:48 America / New_York | Link Gavin King
Esse erro é muito estranho, pois as referências locais do EJB sempre devem ser serializáveis. Bug em glassfish, talvez?
Basicamente, o @Inject é sempre melhor, pois:
it is more typesafe,
it supports @Alternatives, and
it is aware of the scope of the injected object.
Eu recomendo o uso do @EJB, exceto para declarar referências a EJBs remotos.
e
Re: Injetar com @EJB ou @Inject?
Nov 2009, 17:42 America / New_York | Link Gavin King
Significa @EJB melhor com EJBs remotos?
Para um EJB remoto, não podemos declarar metadados como qualificadores, @Alternative, etc, na classe bean, pois o cliente simplesmente não terá acesso a esses metadados. Além disso, alguns metadados adicionais devem ser especificados que não são necessários para o caso local (nome JNDI global de qualquer que seja). Então, tudo isso precisa ir para outro lugar: a declaração @Produces.
@EJB
funciona para injeção circular (um feijão singleton e outro feijão precisando de uma referência um para o outro)? (com referência a minha resposta abaixo - eu não tenho certeza se estou fazendo a coisa certa ao mudar para@EJB
)