JBoss 4.x won't automatically inject EJB's into Servlets/JSPs/POJOs. But it won't complain about the annotations either, it simply won't work at runtime, and the objects will remain Null. You have to use JNDI lookup.
From the JBoss docs:
Lookup of EJBs @EJB annotations are
usable in servlets and JSPs, but
unfortunately, we have not yet updated
tomcat to support it. Also, Tomcat
works with the old XML format so you
cannot use XML either. So for now, you
must lookup the EJB via its global
JNDI name. This is not compliant, but
if you abstract out enough you'll be
fine.
Example:
public void init() throws ServletException
{
super.init();
try
{
InitialContext ctx = new InitialContext();
// J2EE 1.5 has not yet defined exact XML <ejb-ref> syntax for EJB3
CalculatorLocal calculator = (CalculatorLocal)ctx.lookup("tutorial/CalculatorBean/local");
setCalculator(calculator);
}
catch (NamingException e)
{
throw new RuntimeException(e);
}
}
Be sure to use the name of your EAR as the first segment in the name you are looking up (tutorial
in the example above).
References: