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

使用JNDI连接数据:

在Spring可以注释

	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="username" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="url" value="${jdbc.url}"></property>
		<property name="driverClassName" value="${jdbc.driverClassName}"></property>
	</bean>

使用:

	<!-- 使用JNDI -->
	<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);
	}
}

添加成功,测试成功;

注:只用dbcp配置dataSource要关闭destroy-method="close",JDNI不用,因为它是由tomcat容器帮我们管理的;

通过JNDI从服务器容器中获取资源_Spring JNDI+Mysql+Tomcat的更多相关文章

  1. 从Spring容器中获取Bean。ApplicationContextAware

    引言:我们从几个方面有逻辑的讲述如何从Spring容器中获取Bean.(新手勿喷) 1.我们的目的是什么? 2.方法是什么(可变的细节)? 3.方法的原理是什么(不变的本质)? 1.我们的目的是什么? ...

  2. FastJson序列化Json自定义返回字段,普通类从spring容器中获取bean

    前言: 数据库的字段比如:price:1 ,返回需要price:1元. 这时两种途径修改: ① 比如sql中修改或者是在实体类转json前遍历修改. ②返回json,序列化时候修改.用到的是fastj ...

  3. java 从spring容器中获取注入的bean对象

      java 从spring容器中获取注入的bean对象 CreateTime--2018年6月1日10点22分 Author:Marydon 1.使用场景 控制层调用业务层时,控制层需要拿到业务层在 ...

  4. asp.net core不通过构造方法从容器中获取对象及解决通过这种方法NLog获取对象失败的问题

    一般想从容器中获取对象,我们都是通过构造方法获取对象,但有些条件不允许不能通过构造方法获取对象,我们必须单独从容器中单独创建获取找个对象,这样我们就不行把找个容器静态保存起来供全局diaoy 一. 简 ...

  5. springboot jar包运行中获取资源文件

    1. 今天晚上写了一个程序,基于Spring boot的一个小网站,发现使用FileUtils.class.getResource(path)来获取jar包中的资源文件并不能成功,其路径很奇怪 fil ...

  6. spring源码 — 二、从容器中获取Bean

    getBean 上一节中说明了容器的初始化,也就是把Bean的定义GenericBeanDefinition放到了容器中,但是并没有初始化这些Bean.那么Bean什么时候会初始化呢? 在程序第一个主 ...

  7. java基础知识3--如何获取资源文件(Java中获取资源文件的url)

    java开发中,常见的resource文件有:.xml,.properties,.txt文件等,后台开发中经常用到读取资源文件,处理业务逻辑,然后返回结果. 获取资源文件的方法说明getResourc ...

  8. C# 从类库中获取资源图片,把图片资源保存到类库中

    /// <summary> /// 获取资源图片 /// </summary> public class AssemblyHelper { #region 常量 /// < ...

  9. Java中获取资源文件的方法总结

    这里总结3中方法获取资源文件的 ServletContext Class ClassLoader 文件的位置 1. ServletContext public void doGet(HttpServl ...

随机推荐

  1. 初学servlet之使用web.xml配置

    先写两个servlet,之后展示web.xml配置 package app01c;import java.io.IOException;import java.io.PrintWriter;impor ...

  2. 十大面试难题解惑,看完秒杀一切 HR 面。程序员必读!

    最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余. 小编收集了10个面试官最爱提的问题,虽然题目千变万化,但是万变不离其宗,只要掌握了答题的 ...

  3. 规约模式(Specification Pattern)

    一.引言 最近在看一个项目的源码时(DDD),对里面的一些设计思想和设计思路有了一些疑问.当看到(Repository层)中使用了 spec.SatisfiedBy() 时,感觉有点懵.于是在项目中搜 ...

  4. [POJ 2248]Addition Chains

    Description An addition chain for n is an integer sequence with the following four properties: a0 = ...

  5. [WC2006]水管局长数据加强版

    Description SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到一 ...

  6. HDU 1724 Ellipse

    Problem Description Math is important!! Many students failed in 2+2’s mathematical test, so let's AC ...

  7. ●洛谷P1083 借教室

    题链: https://www.luogu.org/problemnew/show/P1083题解: 二分,差分 显然具有二分性: 如果只考虑1~p个人,就会在某一天无法满足, 那么显然只考虑1~[p ...

  8. Python【第四课】 模块 and 包

    本篇内容 模块基础和导入(import,from...import...) 包常识和导入(import,from...import...) 函数式第一类对象 1.模块基础和导入 1.1 模块认识 什么 ...

  9. 3行代码快速实现Spring Boot Oauth2服务

    这里的3行代码并不是指真的只需要写3行代码,而是基于我已经写好的一个Spring Boot Oauth2服务.仅仅需要修改3行数据库配置信息,即可得到一个Spring Boot Oauth2服务. 项 ...

  10. spring @Value 设置默认值

    @Value("${spring.value.test}") private String value; 如果配置文件中没有设置 spring.value.test 在启动的时候讲 ...