`

配置tomcat数据源

    博客分类:
  • jdbc
 
阅读更多

 

0 JNDI简介:

 

JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.naming包,
这套API的主要作用在于:它可以把Java对象放在一个容器中(JNDI容器),并为容器中的java对象取一个名称,以后程序想获得Java对象,只需通过名称检索即可。
其核心API为Context,它代表JNDI容器,其lookup方法为检索容器中对应名称的对象。

 

 

 

 

1 : tomcat内配置数据源 

tomcat数据源的配置是通过JNDI方式,可以启动tomcat,访问地址:

http://localhost:8080/docs/jndi-resources-howto.html

找到如下位置来参考配置:

 

JDBC Data Sources
0. Introducation
........


4. Configure Tomcat's Resource Factory 配置tomcat数据源工厂

To configure Tomcat's resource factory, add an element like this to the <Context> element for the web application.
		
	

<Context ...>  
  ...
  <Resource name="jdbc/EmployeeDB"
            auth="Container"
            type="javax.sql.DataSource"
            username="dbusername"
            password="dbpassword"
            driverClassName="org.hsql.jdbcDriver"
            url="jdbc:HypersonicSQL:database"
            maxActive="8"
            maxIdle="4"/>
  ...
</Context>

	

 tomcat创建好数据源对象后,会将此对象放在tomcat容器中(JNDI容器),对象的名称是通过Resource name="jdbc/EmployeeDB"中的name属性配置,那么应用程序就可以通过name属性获取到。


获取写法见:

 

 

3. Code Your Application's Use Of This Resource

A typical use of this resource reference might look like this:
		
	

Context initCtx = new InitialContext(); // 初始化环境
Context envCtx = (Context) initCtx.lookup("java:comp/env");//检索出保存数据源的容器,固定写法 
DataSource ds = (DataSource)
  envCtx.lookup("jdbc/EmployeeDB");//从容器中获取配置的数据源对象

Connection conn = ds.getConnection(); // 获取数据库连接 
... use this connection to access the database ...//使用连接下执行和数据库相关操作
conn.close(); // 关闭数据库连接

 

 

 

context.xml配置代码:

 

可以写在tomcat的context.xml内配置,这样配置完之后提供的是全局范围内可访问,如果tomcat/webapps内配置多个web工程,均可以访问(类比于全局变量)

 

或者在web项目的META-IN内写,这样配置后,只能是本web工程可访问(类比于局部变量)



 

context.xml内容:

<Context>
  <Resource name="jdbc/EmployeeDB" auth="Container"
            type="javax.sql.DataSource"
            username="root"
            password="root"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/jdbc"
            maxActive="8"
            maxIdle="4"/>
</Context>

 

 

 

 

 

java获取jndi配置数据源代码如下:

 

 

try{
			
		Context initCtx = new InitialContext();  //初始化jndi
		Context envCtx = (Context) initCtx.lookup("java:comp/env");  // 检索出jndi容器
		DataSource ds = (DataSource)envCtx.lookup("jdbc/EmployeeDB");  //从jndi容器中检索出对象

		Connection conn = ds.getConnection();// 返回 conn的代理对象
		String sql = "insert into student(name) values('bb')";
		PreparedStatement st = conn.prepareStatement(sql);
		st.executeUpdate();
		
		st.close();
		conn.close();
		
		}catch(Exception e){
			e.printStackTrace();
		}

 

 

 

 

2 注意事项:
使用tomcat数据源,必须要把数据库的驱动jar包放在tomcat的lib中,因为我们通过tomcat创建数据库连接池,需要加载数据库连接驱动,而tomcat加载驱动只会去tomcat自身的lib内找

 

 

3 tomcat默认数据源dbcp一些说明:

 

tomcat默认数据源为dbcp,查看lib下可找到tomcat-dbcp.jar 这个包,

上一篇文章介绍jdcp数据源时,引用的包为 Commons-dbcp.jar 和 Commons-pool.jar

那么tomcat-dbcp.jar与commons-dbcp.jar区别在哪里:

 1 tomcat-dbcp 包括了 pool的功能.但是Common-DBCP没有 它要加上common-pool才能实行 pool 的功能.

2 Common-DBCP 不支持 jnid ,tomcat-dbcp 支持.

  • 大小: 10.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics