Можно ли заменить EJB бины на CDI и как это скажется на работе программы?
В крайнем случае, можно ли заменить как-то аннотации (оставить только @Inject или @EJB), к примеру тут?
UserBean.java:
@Named
@SessionScoped
public class UserBean implements Serializable{
private User user;
@EJB
private UserManager userManager;
boolean doLogin(String login, int passwordHash) {
user = userManager.doLogin(login, passwordHash);
if (logUser == null) {
return false;
} else {
user = logUser;
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("greetings");
} catch (IOException e) {
e.printStackTrace();
}
}
return true;
}
UserManager.java:
@Stateless
@LocalBean
public class UserManager {
@PersistenceContext(unitName = "examplePU")
private EntityManager entityManager;
public User doLogin(String login, int passwordHash) {
UserEntity userEntity = entityManager.find(UserEntity.class, login);
return userEntity.toDto();
}
public User createUser(String login, int passwordHash){
UserEntity newUserEntity = new UserEntity();
newUserEntity.setName(login);
newUserEntity.setPasswordHashCode(passwordHash);
entityManager.persist(newUserEntity);
return newUserEntity.toDto();
}
public void updateUser(User user){
UserEntity userEntity = entityManager.find(UserEntity.class, user.getName());
userEntity.fromDto(user);
entityManager.merge(userEntity);
}
}
RegistrationBean.java:
@Named
@RequestScoped
public class RegistrationBean {
private String newLogin = "";
private String newPassword = "";
@EJB
private UserManager userManager;
@Inject
private UserBean userBean;
public void register() {
newLogin = newLogin.trim();
User newUser = userManager.createUser(newLogin, newPassword.hashCode());
userBean.doLogin(newUser.getName(), newPassword.hashCode());
}
}
}
Когда я меняю аннотацию @EJB на @Inject, бросает ошибку:
20:38:22,150 ERROR [ru.rustem.servlets.ErrorHandler] (default task-1) ERRORServlet : greetingsServlet Code :500Message:Can not set ru.rustem.ejb.UserManager field ru.rustem.beans.UserBean.userManager to ru.rustem.ejb.UserManager$Proxy$_$$_Weld$EnterpriseProxy$Exception : class java.lang.IllegalArgumentException
20:38:24,402 ERROR [io.undertow.request] (default task-3) UT005023: Exception handling request to /view/: java.lang.IllegalArgumentException: Can not set ru.rustem.ejb.UserManager field ru.rustem.beans.UserBean.userManager to ru.rustem.ejb.UserManager$Proxy$_$$_Weld$EnterpriseProxy$
Задача в том чтобы отставить только один тип бинов или хотя бы аннотаций...
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости