Hibernate4.1配置數據庫連接池 org.hibernate.service.jndi.JndiException:Unable to lookup JNDI name java:comp/env...


數據庫連接池技術的基本原理:

由Web容器(如Tomcat)提供數據源對象,在程序中使用 JNDI 技術獲得該對象。一般如果自己創建連接的話,用下面的代碼獲取數據源對象:

Context context = new InitialContext();

DataSource dataSource = (DataSource)context.lookup("java://comp/env/jdbc/mydb");

Connection conn = dataSource.getConnection();

這里mydb是要連接到的數據庫名,一定要注意 java: 后面有雙斜線,否則就會報出異常:

org.hibernate.service.jndi.JndiException:Unable to lookup JNDI name java:comp/env...

但其實如果使用Hibernate框架的話,就不用這樣費事了。按照下面的步驟一步步來就OK了:

1. 找到tomcat安裝目錄,以 D:\Program Files\Apache Software Foundation\Tomcat 6.0\conf 為例,在 context.xml 文件中的<Context>標簽下添加代碼:

1 <!--Resource 設置數據庫連接池的核心-->
2     <!--屬性 name 數據源的名字       屬性 auth 表示驗證方式     type 資源的類型  -->     
3     <Resource name="jdbc/struts" auth="Container" type="javax.sql.DataSource"
4               maxActive="100" maxIdle="30" maxWait="10000"
5               username="root" password="****"
6               driverClassName="com.mysql.jdbc.Driver"
7               url="jdbc:mysql://192.168.1.173:3306/struts"/>

  我的數據庫名稱為struts,所以這里配置的名字也是struts。

2. 將JDBC的驅動jar包放到 tomcat 的 lib 文件夾下,如 D:\Program Files\Apache Software Foundation\Tomcat 6.0\lib。
3. 在項目的 web.xml 文件中添加如下代碼:

1    <resource-ref>
2       <description>struts datasource</description>
3       <res-ref-name>jdbc/struts</res-ref-name>
4       <res-type>javax.sql.DataSource</res-type>
5       <res-auth>Container</res-auth>
6   </resource-ref>

  這里的各配置要和在 context.xml 文件中的配置一致。

4. 配置 hibernate.cfg.xml。可以使用視圖直接選擇 Use JNDI DataSource 選項,然后在DataSource欄中填入 "java://comp/env/jdbc/struts"。生成的代碼:

 1 <?xml version='1.0' encoding='UTF-8'?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4           "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5 <!-- Generated by MyEclipse Hibernate Tools. -->
 6 <hibernate-configuration>
 7 
 8     <session-factory>        
 9         <property name="connection.datasource">
10             java://comp/env/jdbc/struts
11         </property>
12         <property name="dialect">
13             org.hibernate.dialect.MySQLDialect
14         </property>
15         
16         <property name="show_sql">true</property>
17         
18         <mapping resource="com/entity/Users.hbm.xml" />
19     </session-factory>
20 
21 </hibernate-configuration>

5. 使用MyEclipse插件添加的Hibernate框架的話,會生成一個 HibernateSessionFactory 類,直接調用這個類的靜態函數 getSession() 就能獲取到 Session 的一個實例。接下來的操作就跟沒使用連接池是一樣的了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM