У меня есть сессионный компонент без сохранения состояния, который я хочу внедрить в другой сессионный компонент без сохранения состояния (LocalBean без интерфейса), используя @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
Вводимый боб:
@Stateless(mappedName="ejb/UserService")
public class UserServiceBean extends BaseServiceBean<User, String> implements UserServiceBeanRemote, UserServiceBeanLocal {
public UserServiceBean() {}
// ... etc
теперь я использую первый компонент в качестве конечной точки REST для веб-приложения на основе Джерси JAX-RS:
@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;
}
}
после этого я нажал 127.0.0.1:8080/myapp/rest/user
UserServiceRest может обработать входящий запрос, но поле userService не создается, @EJB не внедряет экземпляр UserServiceBeanLocal, поэтому userService имеет значение null.
Я хотел бы знать, чего не хватает, поскольку я внедряю его в другой EJB, он должен работать, как и ожидалось.