Я никогда не использовал новую функцию @Singleton в JavaEE 6, и я хочу попробовать.
Я думал о том, чтобы создать синглтон с паролем, который позволит администратору приложения (человеккоторый знает пароль), чтобы получить доступ к некоторому контенту приложения.
Я пытался реализовать его, следуя этому учебнику , но он не работает.Вот что я сделал:
Я создал синглтон-компонент:
@Singleton
@Startup
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class AdminAcountEJB implements IAdminAcountEJB {
private String password;
@PostConstruct
public void init() {
password = "password";
}
@Lock(LockType.READ)
public String getPassword() {
return password;
}
}
Я извлек интерфейс
public interface IAdminAcountEJB {
public abstract String getPassword();
}
Затем я пытаюсь внедрить синглтон в управляемыйbean с использованием @ EJB
@Named("managementBB")
@SessionScoped
public class ManagementBB implements Serializable{
@EJB
private IAdminAcountEJB managementEJB;
private String input;
private boolean authorized;
public String seeWhatsUp() {
if(input.equals(managementEJB.getPassword())) {
authorized = true;
return "manage?faces-redirect=true;";
}
return "index?faces-redirect=true;";
}
//Get set methods...
}
Последнее, что я делаю, это создаю некоторую разметку, которая отображается в случае ввода правильного пароля:
<h:form rendered="#{managementBB.authorized == false}">
<h:inputSecret value="#{managementEJB.input}"/>
<h:commandButton value="..." action="#{managementEJB.seeWhatsUp}"/>
</h:form>
<h:form rendered="#{managementBB.authorized}">
CORRECT PASSWORD!!
</h:form>
Все это кажется мне нормальным, нокогда я захожу на страницу, консоль говорит:
javax.naming.NameNotFoundException: ejbinterfaces.IAdminAcountEJB # ejbinterfaces.IAdminAcountEJB не найден
Я не понимаю, почему этоне работает, вот как я внедряю другие EJB, которые не являются Singletones, но с @Singleton это не работает.
-Как я могу это исправить?
-Мне также интереснозная, что вы думаете об использовании синглетона для этой цели, вы думаете, что это хорошая и безопасная идея?