2016-03-01 67 views

回答

0

因爲您不知道爲什麼和什麼領域 - 對於JAVA Web應用程序,身份驗證和授權可以由應用程序或容器(Tomcat等)處理。如果選擇使用容器,則需要指定用戶存儲區(用戶名,希望加密的密碼,角色等的存儲位置)。這甚至可以是你的Tomcat用戶xml incase的Tomcat。或者你可以使用數據庫(MYSQL等)或目錄(Active Directory等)。 Tomcat使用JDBC(您的JDBC領域)連接到數據庫並使用JNDI(您的DataSourceRealm)連接到目錄。

回答您的問題JDBC連接非常昂貴,具有池化限制,並且會遇到高度同步,這意味着在高負載應用程序中,由於JDBC不可用,所以某些請求的身份驗證可能會失敗。 JNDI有更好的池被讀取優化,並因此提供更好的性能。

+0

感謝您的回覆!我試圖在Glassfish中創建一個非JDBC資源,但是我應該寫入JNDI名稱(因爲JDBC以jdbc開頭,這裏是什麼)以及什麼是工廠類? :O –

+0

還是你推薦的不是基於數據庫的人? (基於文件)由於動態註冊的能力,我需要db存儲。 –

+0

基於文件的確實不是最好的方法。就像我說的那樣,有一種稱爲目錄a.k.a的用戶存儲(如Microsoft Active Directory),用於存儲用戶數據。目錄被讀取優化,這意味着讀取操作比寫入操作快得多。根據您的應用程序的受衆有多大,您可以決定最適合您的應用程序的最佳選擇。擁有超過一千人的大多數組織都使用用戶數據目錄。如果根據您期望的用戶數量沒有巨大的性能問題,也可以使用數據庫。 –