Можно ли заменить 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$
Задача в том чтобы отставить только один тип бинов или хотя бы аннотаций...
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Привет, использую Swing для создания графических приложений, наткнулся на JavaFX, многие пишут что swing уже очень старый и вообще деревняЕсть ли что-то...
Возможно я что - то не так понимаюНо по моей логике переменная переданная в метод и дальнейшие модификации с ней должны остаться в это методе,...