JNDI就像是類固醇地圖嗎?我使用一個鍵來查找對象的引用。 另外,什麼是InitialContext?我似乎不明白這個想法。瞭解JNDI
Q
瞭解JNDI
22
A
回答
32
概念上,JNDI就像是類固醇上的System.getProperties()
。
System.getProperties()
允許您從命令行將String
參數傳遞給您的代碼。同樣,JNDI允許您在代碼之外配置任意對象(例如,在應用程序服務器配置文件中),然後在您的代碼中使用它們。
換句話說,它的實現是Service Locator pattern:您的代碼從中心註冊表獲取由環境配置的服務。
與服務定位器通常一樣,您的代碼應該有一些入口點來訪問服務定位器。 InitialContext
是這個入口點:您創建InitialContext
,然後從lookup()
從JNDI獲得所需的服務。
9
讓我們來談談代碼,加載jndi的類是一個單例,你會提供它到你的jndi資源的關鍵。下面,我正在加載一個數據源(datasource =「JDBC/dummy」)。
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("jndicontext");
ds = (DataSource) envCtx.lookup("JDBC/dummy");
} catch (Exception e) {
log.error(e);
}
初始上下文將資源作爲對象返回給我。我可以用同樣的方法加載一個bean。
Connection conn = ds.getConnection();
但是有什麼意義呢?只爲特定環境存儲對象而不考慮其類型。然後在飛行中更改他們的信息。你會注意到,我沒有寫任何登錄/密碼。
在此示例中,根據當前環境: - 在生產中,它返回到數據庫的連接。 - 在集成環境中,它返回到另一個數據庫的連接 - 在開發過程中,它實例化該類的另一個實現(mock ones),並使用xml文件作爲數據源。
Regards
相關問題
- 1. 需要幫助瞭解JNDI和J2EE中的特定ClassCastException
- 2. 無法解析<JNDI>
- 3. 瞭解
- 4. servicemix 4.3.0和jndi
- 5. EJB jndi屬性
- 6. jndi + spring tutorial
- 7. Glassfish的EJB JNDI
- 8. javax.naming.NameNotFoundException | JNDI查找
- 9. JNDI-LDAP分頁
- 10. JNDI集羣
- 11. MongoDb通過jndi
- 12. Tomcat:我搞砸了我的jndi連接設置或什麼?
- 13. 訪問JNDI數據源沒有了java:comp/env的前綴
- 14. 附加了__pm的JNDI資源名稱。部署失敗
- 15. 瞭解JWT
- 16. 瞭解#includes C++
- 17. 瞭解類圖
- 18. 瞭解類
- 19. 瞭解BufferStruct + WriteMemoryCallback
- 20. 瞭解jQuery的
- 21. 瞭解UIPickerView
- 22. 瞭解max上
- 23. 瞭解大哦
- 24. 瞭解JVM GC
- 25. 瞭解IOexceptin()
- 26. 瞭解TreeMaps
- 27. 瞭解Phonegap
- 28. 不瞭解angularjs
- 29. 瞭解AccessController.doPrivileged
- 30. 瞭解佈局
不知道有關類固醇,它總是比平凡實現的地圖慢,並且只允許鍵或字符串的名稱。如果你問我:這是一個殘缺版本的地圖 – bestsss 2011-02-28 14:56:36