Как использовать обратный вызов входа в систему для клиента приложения - PullRequest
0 голосов
/ 21 июля 2009

Я пишу клиент приложения 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. Я пробовал различные комбинации примеров из сети, но очень немногие предназначены для клиентов приложений.

Ответы [ 2 ]

2 голосов
/ 25 января 2010

Ну, я решил вторую (и самую важную проблему), добавив следующее к application-client.xml:

<application-client...>
  ...
  <callback-handler>package.name.ClassName</callback-handler>
</application-client>
0 голосов
/ 11 августа 2009

Кажется, он пытается сразу же аутентифицироваться (когда на бин ссылаются), а не когда я пытаюсь вызвать метод. Я могу жить с этим.

Это потому, что для создания контекста RMI необходимо пройти аутентификацию.

...