欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
JNDI概述
JNDI概述
JNDI是 Java 命名與目錄接口(Java Naming and Directory Interface),在J2EE規范中是重要的規范之一,不少專(zhuān)家認為,沒(méi)有透徹理解JNDI的意義和作用,就沒(méi)有真正掌握J2EE特別是EJB的知識。
那么,JNDI到底起什么作用?

要了解JNDI的作用,我們可以從“如果不用JNDI我們怎樣做?用了JNDI后我們又將怎樣做?”這個(gè)問(wèn)題來(lái)探討。

沒(méi)有JNDI的做法:
程序員開(kāi)發(fā)時(shí),知道要開(kāi)發(fā)訪(fǎng)問(wèn)MySQL數據庫的應用,于是將一個(gè)對 MySQL JDBC 驅動(dòng)程序類(lèi)的引用進(jìn)行了編碼,并通過(guò)使用適當的 JDBC URL 連接到數據庫。
就像以下代碼這樣:
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并進(jìn)行SQL操作 */
......
conn.close();
}
catch(Exception e) {
e.printStackTrace();
}
finally {
if(conn!=null) {
try {
conn.close();
} catch(SQLException e) {}
}
}

這是傳統的做法,也是以前非Java程序員(如Delphi、VB等)常見(jiàn)的做法。這種做法一般在小規模的開(kāi)發(fā)過(guò)程中不會(huì )產(chǎn)生問(wèn)題,只要程序員熟悉Java語(yǔ)言、了解JDBC技術(shù)和MySQL,可以很快開(kāi)發(fā)出相應的應用程序。

沒(méi)有JNDI的做法存在的問(wèn)題:
1、數據庫服務(wù)器名稱(chēng)MyDBServer 、用戶(hù)名和口令都可能需要改變,由此引發(fā)JDBC URL需要修改;
2、數據庫可能改用別的產(chǎn)品,如改用DB2或者Oracle,引發(fā)JDBC驅動(dòng)程序包和類(lèi)名需要修改;
3、隨著(zhù)實(shí)際使用終端的增加,原配置的連接池參數可能需要調整;
4、......

解決辦法:
程序員應該不需要關(guān)心“具體的數據庫后臺是什么?JDBC驅動(dòng)程序是什么?JDBC URL格式是什么?訪(fǎng)問(wèn)數據庫的用戶(hù)名和口令是什么?”等等這些問(wèn)題,程序員編寫(xiě)的程序應該沒(méi)有對 JDBC 驅動(dòng)程序的引用,沒(méi)有服務(wù)器名稱(chēng),沒(méi)有用戶(hù)名稱(chēng)或口令 —— 甚至沒(méi)有數據庫池或連接管理。而是把這些問(wèn)題交給J2EE容器來(lái)配置和管理,程序員只需要對這些配置和管理進(jìn)行引用即可。

由此,就有了JNDI。

用了JNDI之后的做法:
首先,在在J2EE容器中配置JNDI參數,定義一個(gè)數據源,也就是JDBC引用參數,給這個(gè)數據源設置一個(gè)名稱(chēng);然后,在程序中,通過(guò)數據源名稱(chēng)引用數據源從而訪(fǎng)問(wèn)后臺數據庫。
具體操作如下(以JBoss為例):
1、配置數據源
在JBoss的 D:\jboss420GA\docs\examples\jca 文件夾下面,有很多不同數據庫引用的數據源定義模板。將其中的 mysql-ds.xml 文件Copy到你使用的服務(wù)器下,如 D:\jboss420GA\server\default\deploy。
修改 mysql-ds.xml 文件的內容,使之能通過(guò)JDBC正確訪(fǎng)問(wèn)你的MySQL數據庫,如下:
<?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>


這里,定義了一個(gè)名為MySqlDS的數據源,其參數包括JDBC的URL,驅動(dòng)類(lèi)名,用戶(hù)名及密碼等。

2、在程序中引用數據源:
Connection conn=null;
try {
Context ctx=new InitialContext();
Object datasourceRef=ctx.lookup("java:MySqlDS"); //引用數據源
DataSource ds=(Datasource)datasourceRef;
conn=ds.getConnection();
/* 使用conn進(jìn)行數據庫SQL操作 */
......
c.close();
}
catch(Exception e) {
e.printStackTrace();
}
finally {
if(conn!=null) {
try {
conn.close();
} catch(SQLException e) { }
}
}

直接使用JDBC或者通過(guò)JNDI引用數據源的編程代碼量相差無(wú)幾,但是現在的程序可以不用關(guān)心具體JDBC參數了。
在系統部署后,如果數據庫的相關(guān)參數變更,只需要重新配置 mysql-ds.xml 修改其中的JDBC參數,只要保證數據源的名稱(chēng)不變,那么程序源代碼就無(wú)需修改。

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

JNDI的擴展:
JNDI在滿(mǎn)足了數據源配置的要求的基礎上,還進(jìn)一步擴充了作用:所有與系統外部的資源的引用,都可以通過(guò)JNDI定義和引用。

所以,在J2EE規范中,J2EE 中的資源并不局限于 JDBC 數據源。引用的類(lèi)型有很多,其中包括資源引用(已經(jīng)討論過(guò))、環(huán)境實(shí)體和 EJB 引用。特別是 EJB 引用,它暴露了 JNDI 在 J2EE 中的另外一項關(guān)鍵角色:查找其他應用程序組件。

EJB 的 JNDI 引用非常類(lèi)似于 JDBC 資源的引用。在服務(wù)趨于轉換的環(huán)境中,這是一種很有效的方法??梢詫贸绦蚣軜嬛兴玫降乃薪M件進(jìn)行這類(lèi)配置管理,從 EJB 組件到 JMS 隊列和主題,再到簡(jiǎn)單配置字符串或其他對象,這可以降低隨時(shí)間的推移服務(wù)變更所產(chǎn)生的維護成本,同時(shí)還可以簡(jiǎn)化部署,減少集成工作。 外部資源”。


總結:
J2EE 規范要求所有 J2EE 容器都要提供 JNDI 規范的實(shí)現。JNDI 在 J2EE 中的角色就是“交換機” —— J2EE 組件在運行時(shí)間接地查找其他組件、資源或服務(wù)的通用機制。在多數情況下,提供 JNDI 供應者的容器可以充當有限的數據存儲,這樣管理員就可以設置應用程序的執行屬性,并讓其他應用程序引用這些屬性(Java 管理擴展(Java Management Extensions,JMX)也可以用作這個(gè)目的)。JNDI 在 J2EE 應用程序中的主要角色就是提供間接層,這樣組件就可以發(fā)現所需要的資源,而不用了解這些間接性。

在 J2EE 中,JNDI 是把 J2EE 應用程序合在一起的粘合劑,JNDI 提供的間接尋址允許跨企業(yè)交付可伸縮的、功能強大且很靈活的應用程序。這是 J2EE 的承諾,而且經(jīng)過(guò)一些計劃和預先考慮,這個(gè)承諾是完全可以實(shí)現的。

 

 

什么是JNDI

JNDI全稱(chēng) Java Naming and Directory Interface
JNDI是Java平臺的一個(gè)標準擴展,提供了一組接口、類(lèi)和關(guān)于命名空間的概念。如同其它很多Java技術(shù)一樣,JDNI是provider-based的技術(shù),暴露了一個(gè)API和一個(gè)服務(wù)供應接口(SPI)。這意味著(zhù)任何基于名字的技術(shù)都能通過(guò)JNDI而提供服務(wù),只要JNDI支持這項技術(shù)。JNDI目前所支持的技術(shù)包括LDAP、CORBA Common Object Service(COS)名字服務(wù)、RMI、NDS、DNS、Windows注冊表等等。很多J2EE技術(shù),包括EJB都依靠JNDI來(lái)組織和定位實(shí)體。
JDNI通過(guò)綁定的概念將對象和名稱(chēng)聯(lián)系起來(lái)。在一個(gè)文件系統中,文件名被綁定給文件。在DNS中,一個(gè)IP地址綁定一個(gè)URL。在目錄服務(wù)中,一個(gè)對象名被綁定給一個(gè)對象實(shí)體。
JNDI中的一組綁定作為上下文來(lái)引用。每個(gè)上下文暴露的一組操作是一致的。例如,每個(gè)上下文提供了一個(gè)查找操作,返回指定名字的相應對象。每個(gè)上下文都提供了綁定和撤除綁定名字到某個(gè)對象的操作。JNDI使用通用的方式來(lái)暴露命名空間,即使用分層上下文以及使用相同命名語(yǔ)法的子上下文。
jndi的用途:
1。你可以用jndi來(lái)得到object類(lèi)的屬性
如:Attribute attr =directory.getAttributes(personName).get("email");
String email = (String)attr.get();
2。你可以用jndi來(lái)搜索對象
如:foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
查找誰(shuí)的名字叫Fox在wiz部門(mén)的員工?
3。你可以用jndi通過(guò)naming/directory服務(wù)查詢(xún)像printers和databases的對象
如:查詢(xún) Printer
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);
4。你可以用jndi列表出命名空間的特殊級別的內容
如:
NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
}
以上根據jndi文檔翻譯的
地址:
http://java.sun.com/products/jndi/overview.html
tomcat數據庫連接池配置中的
java:comp/env代表你的JVM的環(huán)境,comp=computer env=environment
JNDI(The Java Naming and Directory Interface,Java命名和目錄接口)是一組在Java應用中訪(fǎng)問(wèn)命名和目錄服務(wù)的API。命名服務(wù)將名稱(chēng)和對象聯(lián)系起來(lái),使得我們可以用名稱(chēng)訪(fǎng)問(wèn)對象。目錄服務(wù)是一種命名服務(wù),在這種服務(wù)里,對象不但有名稱(chēng),還有屬性。
命名或目錄服務(wù)使你可以集中存儲共有信息,這一點(diǎn)在網(wǎng)絡(luò )應用中是重要的,因為這使得這樣的應用更協(xié)調、更容易管理。例如,可以將打印機設置存儲在目錄服務(wù)中,以便被與打印機有關(guān)的應用使用
JNDI概述
我們大家每天都不知不覺(jué)地使用了命名服務(wù)。例如,當你在web瀏覽器輸入URL,http://java.sun.com時(shí),DNS(Domain Name System,域名系統)將這個(gè)符號URL名轉換成通訊標識(IP地址)。命名系統中的對象可以是DNS記錄中的名稱(chēng)、應用服務(wù)器中的EJB組件(Enterprise JavaBeans Component)、LDAP(Lightweight Directory Access Protocol)中的用戶(hù)Profile。
目錄服務(wù)是命名服務(wù)的自然擴展。兩者之間的關(guān)鍵差別是目錄服務(wù)中對象可以有屬性(例如,用戶(hù)有email地址),而命名服務(wù)中對象沒(méi)有屬性。因此,在目錄服務(wù)中,你可以根據屬性搜索對象。JNDI允許你訪(fǎng)問(wèn)文件系統中的文件,定位遠程RMI注冊的對象,訪(fǎng)問(wèn)象LDAP這樣的目錄服務(wù),定位網(wǎng)絡(luò )上的EJB組件。
對于象LDAP 客戶(hù)端、應用launcher、類(lèi)瀏覽器、網(wǎng)絡(luò )管理實(shí)用程序,甚至地址薄這樣的應用來(lái)說(shuō),JNDI是一個(gè)很好的選擇。
JNDI架構
JNDI架構提供了一組標準的獨立于命名系統的API,這些API構建在與命名系統有關(guān)的驅動(dòng)之上。這一層有助于將應用與實(shí)際數據源分離,因此不管應用
訪(fǎng)問(wèn)的是LDAP、RMI、DNS、還是其他的目錄服務(wù)。換句話(huà)說(shuō),JNDI獨立于目錄服務(wù)的具體實(shí)現,只要你有目錄的服務(wù)提供接口(或驅動(dòng)),你就可以使用目錄。

JNDI是一組API,它用命名/目錄服務(wù)增強了網(wǎng)絡(luò )應用。本文中的示例說(shuō)明了用JNDI開(kāi)發(fā)基于目錄的應用是多么容易。它也說(shuō)明了如何用同樣的API訪(fǎng)問(wèn)不同的命名/目錄服務(wù)。開(kāi)發(fā)者不必學(xué)習不同的API。在某些情況下,例如,在RMI和CORBA應用中,JNDI允許你部署時(shí)才選擇命名服務(wù)。
JNDI未來(lái)將增加的功能包括:與標準的Java SASL API(JSR-28,http://jcp.org/aboutJava/communityprocess/review/jsr028/) 的集成、支持國際化域名、支持安全DNS。
為了開(kāi)始使用JNDI和LDAP,下載Sun ONE目錄服務(wù)器試用版(http://wwws.sun.com/software/products/directory_srvr/home_directory.html),這個(gè)服務(wù)器支持多種語(yǔ)言、多種平臺。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
J2EE容器,EJB、JNDI概念掃盲
Java中的事務(wù)
JNDI與JDBC比較以及連接池的技術(shù) - Do-websoftware - 博客園
Tomcat7配置數據源
JDBC與JNDI這兩種連接方式有什么區別?
什么是javaEE?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久