I have a Stateless Session bean which I want to inject into another Stateless Session Bean (no-interface LocalBean) using @EJB:
@Path("/user")
@LocalBean
@Stateless(mappedName = "ejb/UserServiceRest")
public class UserServiceRest extends BaseServiceFacadeRest<User, String> {
@EJB(mappedName = "ejb/userService")
private UserServiceBeanLocal userService;
public UserServiceRest() {}
public getService() {return userService;}
// ... etc
The bean being injected is:
@Stateless(mappedName="ejb/UserService")
public class UserServiceBean extends BaseServiceBean<User, String> implements UserServiceBeanRemote, UserServiceBeanLocal {
public UserServiceBean() {}
// ... etc
now I use the first bean as a REST endpoint for a Jersey JAX-RS based webapp:
@ApplicationPath("/rest")
public class MyPortalApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> classes = new HashSet<Class<?>>();
// register root resource
classes.add(UserServiceRest.class);
return classes;
}
}
after that I hit 127.0.0.1:8080/myapp/rest/user
UserServiceRest is able to handle the incoming request, but the userService field is not instantiated, @EJB is not injecting a UserServiceBeanLocal instance, thus userService is null.
I would like to know what is missing, since I'm injecting it into another EJB it should work as expected.