Исключение JMS при попытке прочитать сообщение - PullRequest
1 голос
/ 12 июля 2011

Привет, ребята, я столкнулся с проблемой, когда при попытке прочитать сообщение на моем сервере я получаю эту ошибку.

java.lang.SecurityException: [Security: 090398] Invalid Subject: Principalals = [application_loginid, Администраторы]

Я устанавливаю значение субъекта безопасности контекста как "jndiuser", но на стороне получателя я получаю вышеуказанную ошибку с основным значением в виде application_loginid вместо "jndiuser".

Я не могу понять, как обновляется эта основная ценность, может кто-нибудь объяснить?

public static Hashtable<String, String> WLEnv = new Hashtable<String, String>();
WLEnv.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
WLEnv.put(Context.PROVIDER_URL, "<value>");
WLEnv.put(Context.SECURITY_PRINCIPAL, "jndiuser");
WLEnv.put(Context.SECURITY_CREDENTIALS, "password");
InitialContext ctx = InitialContext(WLEnv);
connFactory = (ConnectionFactory) ctx.lookup("<CF lookup name>");

Ответы [ 2 ]

0 голосов
/ 26 октября 2012

Я получил один из них, когда неправильно настроил свое веб-приложение.

У нас есть два развертывания:

  • EJB-приложение
  • Веб-приложение

Мне необходимо настроить соединение t3 для веб-приложения для подключения к приложению EJB. Я неправильно настроил это, чтобы указать на неправильный сервер, и поэтому мне показалась ошибка java.lang.SecurityException: [Security:090398]Invalid Subject.

Сначала это сбивало с толку, поскольку сообщение обычно отображается, когда междоменная защита не включена в WebLogic. В то время я не осознавал, что выполняю аутентификацию в разных доменах, потому что не осознавал, что я подключаюсь к удаленным серверам. Как только я исправил конфигурацию, ошибка безопасности исчезла.

У меня есть небольшой вопросительный знак, если междоменная безопасность должна быть настроена для работы в кластере, но я узнаю об этом позже!

Для получения дополнительной информации см .: http://docs.oracle.com/cd/E15051_01/wls/docs103/secmanage/domain.html#wp1176048

0 голосов
/ 13 июля 2011

@ kartick: Вышеупомянутый код только для доступа к серверу JNDI, а не к системе JMS ... так что вы используете jndiuser для доступа к серверу JNDI .... чтобы проверить, каких пользователей вы используете для доступа к сообщениям из системы JMS, проверьте конфигурацию фабрики соединений очереди в консоли.

...