zoukankan      html  css  js  c++  java
  • 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 的一个实例。接下来的操作就跟没使用连接池是一样的了。

  • 相关阅读:
    BSS Audio® Introduces Full-Bandwidth Acoustic Echo Cancellation Algorithm for Soundweb London Conferencing Processors
    转:虚拟运营商颠覆八大行业 170号码将成主流?
    移动通信调制技术的进展 转
    转:瑞利信道,莱斯信道和高斯信道模型
    转:Android开发之旅:环境搭建及HelloWorld
    web端视频直播网站的弊端和优势
    频域分辨率与DFT,DCT,MDCT理解
    转:超声波支付
    谈音频算法技术研发团队建立
    转:HTML5标准与性能之四:asm.js
  • 原文地址:https://www.cnblogs.com/lihuiyy/p/2969870.html
Copyright © 2011-2022 走看看