My question is along the lines of this one: http://forums.java.net/jive/thread.jspa?threadID=69238
I noticed in the weld-translator app that in the TextTranslator class below:
public class TextTranslator implements Serializable { private SentenceParser sentenceParser; @EJB private Translator translator; @Inject public TextTranslator(SentenceParser sentenceParser) { this.sentenceParser = sentenceParser; } public String translate(String text) { StringBuilder sb = new StringBuilder(); for (String sentence: sentenceParser.parse(text)) { sb.append(translator.translate(sentence)).append(". "); } return sb.toString().trim(); } }
there is usage of both @EJB and @Inject. One is a session bean, the other is a JavaBean. I replaced the @EJB with @Inject and everything still works fine apparently.
(Yes, I did read the weld-reference doc this time, specifically section 7.4)
So what is the best practice here in terms of injecting session beans? It would be nice to use only @Inject for everything similar to what we currently do with @In in Seam 2.x.
We would recommend using @Inject. The example uses both to show that both work inside a managed bean.