My understanding is that as long as the servlets and
ejb beans are running collocated on the same jvm, then you can use the @EJB annotation. However, if the servlets and ejb beans are running on different jvms then you need to use JNDI lookup.
Basically, if your invoking local interface on the ejb I think you can use the @EJB annotation and if you are using the remote interface you have to use the JNDI.