Quiero inyectar el usuario actual usando @Inject @Current User
en todas las capas (es decir, capa web, capa EJB). Con el fin de hacer esto, tengo el siguiente método CDI Productor:Llamar a un método de productor con ámbito de sesión CDI desde un bean de sesión sin estado EJB
@Named
@SessionScoped
public class UserController {
@Resource SessionContext sessionContext;
@EJB UserDao userDao;
@Produces @Current
public User getCurrentUser() {
String username = sessionContext.getCallerPrincipal().getName();
User user = userDao.findByUsername(username);
}
}
@Qualifier
@Target({TYPE, METHOD, PARAMETER, FIELD})
@Retention(RUNTIME)
public @interface Current{}
Ahora, quiero inyectar el usuario actual en un bean de sesión sin estado EJB de la siguiente manera:
@Stateless
public class SomeBackendService {
@Inject @Current
private User user;
}
Mi pregunta: ¿Es el objeto de usuario actual siempre vuelve a inyectarse después de que la sesión cambia, porque las dependencias de un bean de sesión sin estado normalmente se inyectan una vez en el momento de la creación y el bean se puede agrupar y usar en diferentes sesiones?
olvidó totalmente los proxies. Lo intenté y funciona como esperaba. Gracias. – Theo