亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用JNDI配置Tomcat數據源[提高訪問數據庫效率]

系統 1887 0
原理:在DataSource中事先建立多個數據庫連接,保存在數據庫連接池中。當程序訪問數據庫時,只用從連接池中取空閑狀態的數據庫連接即可,訪問結束,銷毀資源,數據庫連接重新回到連接池,呵呵,這與每次去直接訪問數據庫相比,會節省大量時間和資源。恩,感覺不錯~
??? ??? JNDI( Java Naming and Directory Interface ) ,是Java平臺 的一個標準擴展,提供了一組接口、類和關于命名空間的概念。如同其它很多Java技術一樣,JDNI是provider-based的技術,暴露了一個 API和一個服務供應接口(SPI)。這意味著任何基于名字的技術都能通過JNDI而提供服務,只要JNDI支持這項技術。JNDI目前所支持的技術包括 LDAP、CORBA Common Object Service(COS)名字服務、RMI、NDS、DNS、Windows注冊表等等。很多J2EE技術,包括EJB都依靠JNDI來組織和定位實體。
??? ?? ?? 哦~JNDI的概念好長~呵呵,朋友們可以把它理解為一種將對象和名字捆綁的技術,對象工廠負責生產出對象,這些對象都和唯一的名字綁在一起,外部資源可以通過名字獲得某對象的引用。

??? ?? ?? 在javax.naming的包包中提供Context接口,提供了兩個很好用的方法:
<1> void bind( String name , Object object )
??? ??? 將名稱綁定到對象。所有中間上下文和目標上下文(由該名稱最終原子組件以外的其他所有組件指定)都必須已經存在。PS:名字不能為空~
<2>Object lookup( String name )
??? ?? 檢索指定的對象。如果 name為空,則返回此上下文的一個新實例(該實例表示與此上下文相同的命名上下文,但其環境可以獨立地進行修改,而且可以并發訪問)。

??? ?? 外部資源訪問對象工廠中的工程圖:

在Tomcat 5.5\conf\Catalina\localhost\xxxxx.xml(xxxxx.xml為你自己的web的配置xml文件)?中添加resource

??????? <Resource name="MYSQL"
??????? type="javax.sql.DataSource"
??????? driverClassName="com.mysql.jdbc.Driver"
??????? password="********"
??????? maxIdle="2"
??????? maxWait="5000"
??????? username="root"
??????? url="jdbc:mysql://localhost:3306/jnestore"
??????? maxActive="10"/>

以上是tomcat 5.5版本的配置,5.5版本只有這樣陪才有效果,以前的版本可以按照paramter的方法添加;

Resource 一定要包含在<Context ......> </Context> 之間

在你的web的路近下,WEB-INF中找到web.xml,添加資源映射??????

????? ?<resource-ref>
?????????? <description>connection</description>
?????????? <res-ref-name>MYSQL</res-ref-name>
?????????? <res-type>javax.sql.DataSource</res-type>
?????????? <res-auth>Container</res-auth>
??????? </resource-ref>

把mysql的jdbc驅動.jar包放到tomcat的common/lib下去,也可以放到WEB-INF/lib下,

重新啟動tomcat.

就可以用Context ctx = new InitialContext();

DataSource ds = (DataSource) ctx.lookup("java:comp/env/MYSQL");

Connection con = ds.getConnection(); 來連接數據庫連接池


一.在tomcat_home\common\lib下放入jdbc的驅動程序,額外說一下,如果是使用sql server的話,有至少兩個驅動可以選擇,一個是微軟提供的,另一個是 jtds,比微軟的要好很多,推薦使用 二.配置文件,tomcat 不同的版本配置文件略有不同,下面以tomcat5..5.*為例。 三.如果配置不正確會出現javax.naming.NameNotFoundException: Name is not bound in this Context 錯誤方式一、全局數據庫連接池 1、通過管理界面配置連接池,或者直接在tomcat\conf\server.xml的GlobalNamingResources中增加 <resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverclassname="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxidle="2" maxwait="5000" validationquery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxactive="4">2、在tomcat\webapps\myapp\META-INF\context.xml的Context中增加: <resourcelink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource">這樣就可以了。方式二、全局數據庫連接池 1、同上 2、在tomcat\conf\context.xml的Context中增加: <resourcelink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource">方式三、局部數據庫連接池只需在tomcat\webapps\myapps\META-INF\context.xml的Context中增加: <resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverclassname="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxidle="2" maxwait="5000" validationquery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxactive="4">參數說明: driveClassName:JDBC驅動類的完整的名稱; maxActive:同時能夠從連接池中被分配的可用實例的最大數; maxIdle:可以同時閑置在連接池中的連接的最大數; maxWait:最大超時時間,以毫秒計; password:用戶密碼; url:到JDBC的URL連接; user:用戶名稱; validationQuery:用來查詢池中空閑的連接。以上三種方式在tomcat 5.5.4下都可以。另外,sql server的jdbc driver是從微軟網站上下載的sql server jdbc (sp3)。 下面 分別舉tomcat5.0 和tomcat 5.5 配置文件 的例子(將此配置文件置于Tomcat \conf\Catalina\localhost 下) tomcat5.0 <resource auth="Container" name="jdbc/test" type="javax.sql.DataSource"><resourceparams name="jdbc/test"> <parameter><name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter><name>maxActive</name> <value>100</value> </parameter> <parameter><name>maxIdle</name> <value>30</value> </parameter> <parameter><name>maxWait</name> <value>10000</value> </parameter> <parameter><name>username</name> <value>sa</value> </parameter> <parameter><name>password</name> <value>test</value> </parameter> <parameter><name>driverClassName</name> <value>net.sourceforge.jtds.jdbc.Driver</value> </parameter> <parameter><name>defaultAutoCommit</name> <value>true</value> </parameter> <parameter><name>url</name> <value>jdbc:jtds:sqlserver://url/filedb;charset=gb2312;autoReconnect=true</value> </parameter> <parameter><name>removeAbandoned</name> <value>true</value> </parameter> <parameter><name>removeAbandonedTimeout</name> <value>60</value> </parameter> <parameter><name>logAbandoned</name> <value>true</value> </parameter> </resourceparams>tomcat 5.5 <resource defaultautocommit="true" removeabandoned="true" removeabandonedtimeout="60" logabandoned="true" auth="Container" name="jdbc/test" type="javax.sql.DataSource" password="test" driverclassname="oracle.jdbc.driver.OracleDriver" maxidle="30" maxwait="10000" username="test" url="jdbc:oracle:thin:@url:1521:dcdb" maxactive="100">可以看到 5.0 中原來是元素的項在5.5中變成了屬性</resource></resource></resource></resourcelink></resourcelink></resource>

使用JNDI配置Tomcat數據源[提高訪問數據庫效率]


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天堂亚洲国产日韩在线看 | 九九精品视频在线观看九九 | 黄色日本视频 | 国产精品视频专区 | 福利视频在线播放 | 亚洲欧美网站 | 美女久久久久久久久久久 | 五月婷婷激情六月 | 九九久久免费视频 | 一级毛片aa高清免费观看 | 成人在线视频网站 | 99久久中文字幕伊人情人 | 国产在线观看午夜不卡 | 一级特黄aaa免费 | 视频一区二区国产无限在线观看 | 一区二区三区欧美日韩 | 日日碰狠狠添天天爽对白 | 亚洲一区二区三区中文字幕 | 亚洲欧美一区二区三区九九九 | 日日噜噜噜夜夜爽爽狠狠69 | 日韩免费一级毛片欧美一级日韩片 | 四虎在线视频观看 | 免费看黄片毛片 | 久久国产网 | 九九精品视频在线观看九九 | 久久国产视频精品 | 欧美性猛交xxxxbbbb | 亚州中文 | 伊人久久网国产伊人 | 国产成人精品午夜在线播放 | 天天干天天射天天爽 | 深夜在线观看 | 老司机精品在线播放 | 99热这里只有精品4 99热这里只有精品5 | 四虎影院最新网址 | 久久久在线视频精品免费观看 | 99在线观看精品视频 | 日本免费三区 | 亚洲精品在线不卡 | 特级毛片免费视频观看 | 热re99久久精品国产99热 |