2011-07-12 44 views
1

嗨,大家好,我正面臨一個問題,當我嘗試在服務器上讀取消息時,出現此錯誤。JMS嘗試讀取消息時出現異常

java.lang.SecurityException異常:安全性:090398]無效主題:主體= [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>"); 
+0

這是程序獨立運行,或者是它比JMS目的地的不同WebLogic Server實例上運行? –

+0

@ Jeff:它運行在不同的weblogic服務器實例中 – karthick

+0

您是否做過任何設置域信任的操作?如果是這樣,它可能試圖使用這些憑據 –

回答

0

@karthick:上面的代碼你提到的只是訪問JNDI不服務器JMS系統...所以你正在使用jndiuser訪問JNDI服務器....檢查正在使用訪問郵件的用戶什麼從JMS系統中,在控制檯中檢查您的隊列連接工廠配置。

+0

由於這是在遠程WebLogic Server上,他必須首先進行身份驗證才能查找連接工廠。如果證書不正確,那麼他將無法訪問JNDI樹。 –

0

當我錯誤地配置我的web應用程序時,我得到了其中一個。

我們有兩個部署:

  • 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