【问题标题】:JMS Exception when trying to read the message尝试阅读消息时出现 JMS 异常
【发布时间】:2011-07-12 13:34:46
【问题描述】:

大家好,我遇到了一个问题,当我尝试在我的服务器上阅读消息时,我收到了这个错误。

java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[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>");

【问题讨论】:

  • 此程序是独立运行,还是运行在与 JMS 目标不同的 WebLogic Server 实例上?
  • @Jeff:它运行在不同的 weblogic 服务器实例中
  • 您是否为建立域信任做过任何事情?如果是这样,它可能正在尝试使用这些凭据

标签: jms weblogic


【解决方案1】:

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

【讨论】:

  • 由于这是在远程 WebLogic Server 上,他必须首先进行身份验证才能查找连接工厂。如果凭据错误,他将无法访问 JNDI 树。
【解决方案2】:

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

我们有两个部署:

  • EJB 应用程序
  • Web 应用程序

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

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

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

更多信息请见:http://docs.oracle.com/cd/E15051_01/wls/docs103/secmanage/domain.html#wp1176048

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2020-09-02
    • 2018-05-12
    相关资源
    最近更新 更多