Я пишу клиент приложения Swing (он работает через веб-запуск, и я использую Glassfish). В классе приложений у меня есть:
@EJB private static MyBean myBean;
и в MyBean
у меня есть:
@Remote
public interface MyBean {
public int getRand();
}
@DeclareRoles(("admin"))
@Stateful(name="MyBean")
public class MyBeanImpl implements MyBean {
@RolesAllowed(("admin"))
public int getRand() {
return 9; // Guaranteed to be random
}
}
Пока все хорошо. Я запускаю приложение, используя javaws http://server/app/app-client
, оно запрашивает пользователя / пароль и аутентифицируется должным образом (используя fileRealm из glassfish).
У меня две проблемы:
- Кажется, он пытается сразу же аутентифицироваться (когда на бин ссылаются), а не когда я пытаюсь вызвать метод. Я могу жить с этим.
- Я хочу использовать свой собственный диалог входа в систему. Частично по эстетическим соображениям, но также из-за изящной обработки ошибок, повторных попыток и т. Д.
Так что мне нужно указать обратный вызов. Используя new LoginContext("fileRealm", myCallback)
, я получаю ошибку об отсутствии модулей входа в систему для fileRealm. Я пробовал различные комбинации примеров из сети, но очень немногие предназначены для клиентов приложений.