`

jndi 配置及使用

    博客分类:
  • jdbc
阅读更多

一 在tomcat下jndi有多种配置方式:

    (1)全局配置:

             在tomcat的conf目录下的context.xml文件中加入如下配置:

            

<Resource name="jdbc/mysql" auth="Container" 
			   type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="60" wait_timeout="18800" 
			   timeBetweenEvictionRunsMillis="300000" minEvictableIdleTimeMillis="600000"
               username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/family?comautoReconnect=true&amp;failOverReadOnly=false"  
			   removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"/>

    配置项意义:

 

   

  1. * driverClassName - 所使用的JDBC驱动类全称。  
  2. * maxActive - 同一时刻可以自数据库连接池中被分配的最大活动实例数。  
  3. * maxIdle - 同一时刻数据库连接池中处于非活动状态的最大连接数。  
  4. * maxWait - 当连接池中没有可用连接时,连接池在抛出异常前将等待的最大时间,单位毫秒。  
  5. * password - 传给JDBC驱动的数据库密码。  
  6. * url - 传给JDBC驱动的连接URL。  
  7. * user - 传给JDBC驱动的数据库用户名。  
  8. * validationQuery - 一个SQL查询语句,用于在连接被返回给应用前的连接池验证。  如果指定了该属性,则必为至少返回一行记录的SQL SELECT语句

    (2)局部配置:

         在应用服务的META-INFO下创建context.xml并且内容如下:

        

<?xml version="1.0" encoding="UTF-8"?>
    <Context>       
    	<Resource  
          name="jdbc/mysql"  
          auth="Container"  
          type="javax.sql.DataSource"  
          password="root"  
          username="root"  
          driverClassName="com.mysql.jdbc.Driver"  
          url="jdbc:mysql://localhost:3306/family?comautoReconnect=true&amp;failOverReadOnly=false"  
          maxIdle="30"  
          maxWait="5000"  
          maxActive="100"  
          factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"  
          />  
    </Context>  

   (3) 还有一种方式是修改tomcat的server.xml,此方式不推荐,所以在此处就不在叙述

 

 

    针对以上配置需要在应用的web.xml添加如下配置:

   

	<resource-ref>  
	  <description>JNDI DataSource</description>  
	  <res-ref-name>jdbc/mysql</res-ref-name>  
	  <res-ref-type>javax.sql.DataSource</res-ref-type>  
	  <res-auth>Container</res-auth>  
	</resource-ref> 

    针对以上web.xml中的配置,网上很多描述要配置,本人把(1),(2)两种情况在不配置web.xml的情况下均能正常使用数据源

 

二 在web项目中配置好了数据源,可以做如下使用
    (1) 直接使用数据源,操作如下代码:
Context ctx = new InitialContext();  
		DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");  
		System.out.println(ds.getClass().getSimpleName());
		Connection conn = ds.getConnection();
    注意:此段代码不能使用application运行,不然会报错(数据源配置在tomcat或web容器上)
    (2)在spring中使用,有如下两种配置方式
<jee:jndi-lookup id="dataSource" jndi-name="java:/comp/env/jdbc/sqlserver"/>
    

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:/comp/env/jdbc/sqlserver"></property>
    </bean>
 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics