日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > J2EE的13個規范之(一) JNDI

J2EE的13個規范之(一) JNDI

來源:程序員人生   發布時間:2014-10-10 08:00:01 閱讀次數:2386次

       最近在學習J2EE,原本以為J2EE也是一種類似于J2SE,c#,vb 那樣的高級語言,沒想到當學了視頻以后,認識到其他他并不是這樣的。

        J2EE是一套全然不同于傳統應用開發的技術架構,包含許多組件,主要可簡化且規范應用系統的開發與部署,進而提高可移植性、安全與再用價值。簡單來說他就是一套規范!

        J2EE組件和標準的” Java類的不同點在于:它被裝配在一個J2EE應用中,具有固定的格式并遵守J2EE規范,由J2EE服務器對其進行管理。J2EE規范是這樣定義J2EE組件的:客戶端應用程序和applet是運行在客戶端的組件;Java ServletJava Server Pages (JSP)是運行在服務器端的Web組件;EnterpriseJava Bean (E JB )組件是運行在服務器端的業務組件等13個組件(規范)。

        今天我們就來說一下,他的JNDI組件

一、JNDI是什么?

      JNDI--Java 命名和目錄接口(Java Naming and Directory Interface),是一組在Java應用中訪問命名服務和目錄服務的API。

       命名服務,說白了就是提供一個名稱鍵值對的管理,即Key-Value對,Key代表一個資源的名稱,Value代表資源的真實地址,命名服務允許大家通過唯一的名稱找到對應的對象或資源。這樣程序只需要知道某種資源的名稱,就可以通過JNDI來訪問到它,而不需要知道這個資源真實的物理地址。這有點類似于DNS服務,DNS服務將域名解析成IP地址,這樣大家只需要在瀏覽器中輸入網站的唯一名稱(即域名)就可以訪問到該網站,而不需要記住這個網站真實的IP地址。

       目錄服務,提供的也是一種公共資源的管理服務。目錄服務是一種特殊類型的數據庫,它按照一定的數據結構,比如樹型結構,把各種公共資源組織并保存起來。這種特殊數據庫與傳統關系型數據庫的區別在于,它對查詢作了優化,其數據結構允許大家非常快速的找到想要的資源,即保障了一種快速查找能力,不過這種設計也犧牲了其他方面的效率,比如它的更新效率就要低得多。

       目錄服務中管理的也是名稱鍵值對,不過其鍵值是具有層次結構的,像一棵樹,即通過一個名稱或一個帶層次結構的名稱,你可以定位到一顆子樹,而不只是一個屬性。由此可見,目錄服務將命名服務的概念進一步引申為提供具有層次結構的信息庫。一個目錄服務通常擁有一個命名服務,但是一個命名服務不必具有一個目錄服務。

        要了解JNDI的作用,我們可以從如果不用JNDI我們怎樣做?用了JNDI后我們又將怎樣做?這個問題來探討。

        沒有JNDI的做法:程序員開發時,知道要開發訪問MySQL數據庫的應用,于是將一個對 MySQL JDBC 驅動程序類的引用進行了編碼,并通過使用適當的 JDBC URL連接到數據庫。

就像以下代碼這樣:

<span style="font-size:14px;">Connection conn=null; try { Class.forName("com.mysql.jdbc.Driver", true, Thread.currentThread().getContextClassLoader()); conn=DriverManager.getConnection("jdbc:mysql://MyDBServer?user=qingfeng&password=mingyue"); /* 使用conn并進行SQL操作 */ ...... conn.close(); } catch(Exception e) { e.printStackTrace(); } finally { if(conn!=null) { try { conn.close(); } catch(SQLException e) {} } } </span>

        這是傳統的做法,也是以前非Java程序員(如DelphiVB等)常見的做法。這種做法一般在小規模的開發過程中不會產生問題,只要程序員熟悉Java語言、了解JDBC技術和MySQL,可以很快開發出相應的應用程序。看一下這樣做的話會有那些問題

       1、數據庫服務器名稱MyDBServer 、用戶名和口令都可能需要改變,由此引發JDBC URL需要修改;

       2、數據庫可能改用別的產品,如改用DB2或者Oracle,引發JDBC驅動程序包和類名需要修改;

       3、隨著實際使用終端的增加,原配置的連接池參數可能需要調整;

      4......

解決辦法:

       程序員應該不需要關心具體的數據庫后臺是什么?JDBC驅動程序是什么?JDBC URL格式是什么?訪問數據庫的用戶名和口令是什么?等等這些問題,程序員編寫的程序應該沒有對 JDBC驅動程序的引用,沒有服務器名稱,沒有用戶名稱或口令 ――甚至沒有數據庫池或連接管理。而是把這些問題交給J2EE容器來配置和管理,程序員只需要對這些配置和管理進行引用即可。

由此,就有了JNDI


用了JNDI之后的做法:

        首先,在在J2EE容器中配置JNDI參數,定義一個數據源,也就是JDBC引用參數,給這個數據源設置一個名稱;然后,在程序中,通過數據源名稱引用數據源從而訪問后臺數據庫。
具體操作如下(以JBoss為例):
1
、配置數據源
        在JBossD:/jboss420GA/docs/examples/jca文件夾下面,有很多不同數據庫引用的數據源定義模板。將其中的 mysql-ds.xml文件Copy到你使用的服務器下,如D:/jboss420GA/server/default/deploy。修改 mysql-ds.xml 文件的內容,使之能通過JDBC正確訪問你的MySQL數據庫,如下:

<span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>MySqlDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/lw</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>rootpassword</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources> </span>
這里,定義了一個名為MySqlDS的數據源,其參數包括JDBC的URL,驅動類名,用戶名及密碼等。

2、 在程序中引用數據源:

<span style="font-size:14px;">Connection conn=null; try { Context ctx=new InitialContext(); Object datasourceRef=ctx.lookup("java:MySqlDS"); //引用數據源 DataSource ds=(Datasource)datasourceRef; conn=ds.getConnection(); /* 使用conn進行數據庫SQL操作 */ ...... c.close(); } catch(Exception e) { e.printStackTrace(); } finally { if(conn!=null) { try { conn.close(); } catch(SQLException e) { } } } </span>
        直接使用JDBC或者通過JNDI引用數據源的編程代碼量相差無幾,但是現在的程序可以不用關心具體JDBC參數了。在系統部署后,如果數據庫的相關參數變更,只需要重新配置 mysql-ds.xml 修改其中的JDBC參數,只要保證數據源的名稱不變,那么程序源代碼就無需修改。

由此可見,JNDI避免了程序與數據庫之間的緊耦合,使應用更加易于配置、易于部署。




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产成人免费 | 日韩午夜在线视频 | 欧美一区二区三区在线播放 | 日韩精品中文字幕在线 | 日韩视频一区二区 | 成人免费激情视频 | 日本公妇乱淫免费视频一区三区 | 中文字幕亚洲专区 | 国产精品三级三级三级 | 国产精品13p | 国产一级免费视频 | 日韩国产在线播放 | 综合婷婷 | av二三区| 免费成人一级片 | 92久久 | 国产精品久久久久久久久久久久冷 | 欧美日韩黄 | 国产精品视频久久久 | 日韩欧美精品 | av在线不卡网站 | 在线欧美一区 | 免费黄色在线 | 日韩在线一区二区三区 | 欧美日韩精品在线观看 | 欧美日韩视频 | 成人a毛片 | 亚洲欧美高清 | 久久蜜桃 | 日本精品国产 | 男女爱爱免费网站 | 三级视频在线播放 | 国产日韩中文字幕 | а√ 天堂 在线官网 | 国产一区二区三区四区三区四 | 爱爱视频在线播放 | 亚洲欧美日韩在线 | 麻豆专区一区二区三区四区五区 | 亚洲一区二区三区四区五区六 | youjizz日本人 | 中文字幕色站 |