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. 瞭解Glassfish控制檯JNDI輸出
- 2. 瞭解JNDI和ENC體系結構
- 3. JNDI解決了ApplicationContext在Spring中無法解決的問題?
- 4. 需要幫助瞭解JNDI和J2EE中的特定ClassCastException
- 5. 瞭解用於Java批處理應用程序的JNDI
- 6. 無法解析<JNDI>
- 7. 不能在春註解配置的JNDI查找找到了JBoss的ConnectionFactory
- 8. JNDI澄清:JNDI API,JNDI SPI,服務提供商
- 9. JNDI InvalidNameException
- 10. 瞭解
- 11. 瞭解
- 12. OpenJpa和JNDI
- 13. Glassfish的EJB JNDI
- 14. JNDI over SSL UnknownHostException
- 15. javax.naming.NameNotFoundException | JNDI查找
- 16. Tomcat JNDI Bean
- 17. JNDI集羣
- 18. EJB jndi屬性
- 19. JNDI和javax.sql.DataSource
- 20. MongoDb通過jndi
- 21. JNDI @Resource註釋
- 22. servicemix 4.3.0和jndi
- 23. JNDI .Net實現
- 24. 困惑於JNDI
- 25. 爲JNDI寫Junit
- 26. JNDI tomcat到weblogic
- 27. JNDI-LDAP分頁
- 28. 春季JNDI MVC
- 29. JNDI modifyAttributes和NameNotFoundError
- 30. jndi + spring tutorial
不知道有關類固醇,它總是比平凡實現的地圖慢,並且只允許鍵或字符串的名稱。如果你問我:這是一個殘缺版本的地圖 – bestsss 2011-02-28 14:56:36