尝试读取消息时出现JMS异常

时间:2011-07-12 13:34:47

标签: jms weblogic

大家好我正面临一个问题,当我尝试在我的服务器上阅读该消息时,我收到此错误。

java.lang.SecurityException:[Security:090398]无效主题:principal = [application_loginid,Administrators]

我将上下文安全主体值设置为“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 :(得分:0)

@karthick:您提到的上面代码只是访问JNDI服务器而不是JMS系统...所以您使用jndiuser访问JNDI服务器....检查您用来访问JMS系统消息的用户,在控制台中检查队列连接工厂配置。

答案 1 :(得分:0)

当我错误配置我的网络应用程序时,我得到了其中一个。

我们有两个部署:

  • EJB应用程序
  • 网络应用程序

我必须为Web应用程序配置t3连接以连接到EJB应用程序。我错误地将其配置为指向错误的服务器,因此向我显示了错误java.lang.SecurityException: [Security:090398]Invalid Subject

这首先令人困惑,因为在WebLogic上未启用跨域安全性时通常会显示该消息。我当时没有意识到我在跨域验证,因为我没有意识到我正在连接到远程服务器。一旦我纠正了配置,安全错误就消失了。

如果跨域安全性需要配置为在群集中运行,我会有一个小问号,但我稍后会发现这一点!

有关详细信息,请参阅:http://docs.oracle.com/cd/E15051_01/wls/docs103/secmanage/domain.html#wp1176048