автономное приложение rcp, защищенные EJB-объекты, glassfish - PullRequest
0 голосов
/ 24 февраля 2012

Я хочу получить доступ к EJB с безопасностью. Я занимаюсь разработкой приложения eclipse rcp и хочу подключиться к серверу glassfish 3.1.1, который имеет защищенные данные EJB, и хочу подключиться к этому EJB s.используя Java EE 6 security

Я нашел что-то вроде этого:

ProgrammaticLogin pm = new ProgrammaticLogin();
pm.login(usernameText.getText(), passwordText.getText());

Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
// optional. Defaults to localhost. Only needed if web server is running on a different host than the appserver
props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
// optional. Defaults to 3700. Only needed if target orb port is not 3700.
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

try
{
    Context ctx = new InitialContext(props);
}
catch (NamingException e)
{
    e.printStackTrace();
}

Я включил все jar s из glassfish appclient.jar glassfish3/glassfish/bin/package-appclient

Примеры ошибок:

SEVERE: SEC9050: Programmatic login failed
com.sun.enterprise.security.auth.login.common.LoginException:  javax.security.auth.login.LoginException: No LoginModules configured for default
at com.sun.enterprise.security.auth.login.LoginContextDriver$9.run(LoginContextDriver.java:889)
...

Знаете ли вы, как безопасно войти в систему EJB s, используя любой метод для настольного приложения?

Мои ссылки:

  1. JavaУчебное пособие по EE 6 - безопасность
  2. Java-советы: доступ к защищенному EJB с клиента

Если вы знаете ответ ... можете ли вы,пожалуйста, приведите примеры?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 21 ноября 2012

Вы можете попробовать сделать вызов pm.login после инициализации контекста.

Я знаю, что этот вопрос старый, но я наткнулся на него после того, как столкнулся с той же ошибкой, и был бы признателен за решение.

У меня был код, сравнимый со следующим:

ProgrammaticLogin pm = new ProgrammaticLogin();
pm.login(username, pass, "file", true);
container = EJBContainer.createEJBContainer(properties);

Просто переупорядочив, как показано ниже, решил проблему:

container = EJBContainer.createEJBContainer(properties);
ProgrammaticLogin pm = new ProgrammaticLogin();
pm.login(username, pass, "file", true);

Идея заключалась в том, что, по крайней мере, насколько я понимаю, мой случай, что сервер / мое соединение с сервером еще не было инициализировано и, следовательно, не смог обработать вход в систему.

0 голосов
/ 24 февраля 2012

Похоже, что в вашем клиентском приложении отсутствуют некоторые зависимые файлы jar.

Похоже, что отсутствующий класс находится в: appserv-rt.jar

Теперь этот файл jar может не распространяться сЗатмение.Проверили, есть ли библиотека Glassfish-client?

...