首页 > 代码库 > 通过JNDI从服务器容器中获取资源_Spring JNDI+Mysql+Tomcat

通过JNDI从服务器容器中获取资源_Spring JNDI+Mysql+Tomcat

通过JNDI从服务器容器中获取DataSource资源 (由容器管理,不要关闭它,容器自己会处理)上一篇我们使用的是dbcp,这里使用JNDI:
使用JNDI连接数据:

在Spring注释

	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="username" value=http://www.mamicode.com/"${jdbc.username}">>
使用:

	<!-- 使用JBDI -->
	<bean id="dataSource" class="org.springframework.jndi.JndiObjectLocator">
		<property name="jndiName">
			<value>java:comp/env/jdbc/joba</value>
		</property>
	</bean>

一、添加数据库驱动文件 

通过数据源访问数据库,由于数据源由tomcat创建并维护,所以必须把MySql的驱动包拷贝到Tomcat根目录\lib中

二、配置数据源 
在tomcat根目录\conf\context.xml里的<Context>节点中添加以下配置 

<Resource name="jdbc/jboa" auth="Container" 
    type="javax.sql.DataSource" 
    username="root" password="jerome" 
    driverClassName="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://127.0.0.1:3306/jboa" 
    maxActive="100" maxIdle="10" maxWait="5000" />
这里我们介绍一下<Resource>节点中的属性: 
(1)name:指定Resource的JNDI名字,可自定义 
(2)auth:指定管理Resource的Manager,它有两个可选值:Container和Application。Container表示由容器来创建和管理Resource,Application表示由web应用来创建和管理Resource 
(3)type:指定Resource所属的java类名 
(4)maxActive:指定数据库连接池中处于活动状态的数据库连接的最大数目。取值为0,表示不受限制 
(5)maxIdle:指定数据库连接池中处于空闲状态的数据库连接的最大数目。取值为0,表示不受限制 
(6)maxWait:指定数据库连接池中数据库连接处于空闲状态的最长时间(以毫秒为单位),超过这个时间将会抛出异常。取值为-1,表示可以无限制等待 
(7)username:指定连接数据库的用户名 
(8)password:指定连接数据库的口令 
(9)driverClassName:指定连接数据库的JDBC驱动程序 
(10)url:指定连接数据库的url

测试:必须在tomcat容器里面运行,要启动tomcat不能用junit

  我这里用的是我练习项目的测试,在action的login方法前面加下面代码登陆的时候就会执行这段代码:这段代码是下面的testAdd考过来的

package com.jboa.service;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.jboa.model.Department;
import com.jboa.model.Employee;
import com.jboa.model.Postion;

public class EmployeeServiceTest {
	@Test
	public void testAdd() {
		ApplicationContext ac = new ClassPathXmlApplicationContext("/*ApplicationContext.xml");
		EmployeeService employeeService = (EmployeeService) ac.getBean("employeeService");
		Employee employee = new Employee();
		employee.setSn("user11111112");
		employee.setPassword("user11111112");
		employee.setStatus("1");
		employee.setName("user1111112");
		Postion p = new Postion();
		p.setId(2);
		employee.setPostion(p);
		Department d = new Department();
		d.setId(1);
		employee.setDepartment(d);
		employeeService.add(employee);
	}
}
添加成功,测试成功;