通过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="${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的更多相关文章
- 从Spring容器中获取Bean。ApplicationContextAware
引言:我们从几个方面有逻辑的讲述如何从Spring容器中获取Bean.(新手勿喷) 1.我们的目的是什么? 2.方法是什么(可变的细节)? 3.方法的原理是什么(不变的本质)? 1.我们的目的是什么? ...
- FastJson序列化Json自定义返回字段,普通类从spring容器中获取bean
前言: 数据库的字段比如:price:1 ,返回需要price:1元. 这时两种途径修改: ① 比如sql中修改或者是在实体类转json前遍历修改. ②返回json,序列化时候修改.用到的是fastj ...
- java 从spring容器中获取注入的bean对象
java 从spring容器中获取注入的bean对象 CreateTime--2018年6月1日10点22分 Author:Marydon 1.使用场景 控制层调用业务层时,控制层需要拿到业务层在 ...
- asp.net core不通过构造方法从容器中获取对象及解决通过这种方法NLog获取对象失败的问题
一般想从容器中获取对象,我们都是通过构造方法获取对象,但有些条件不允许不能通过构造方法获取对象,我们必须单独从容器中单独创建获取找个对象,这样我们就不行把找个容器静态保存起来供全局diaoy 一. 简 ...
- springboot jar包运行中获取资源文件
1. 今天晚上写了一个程序,基于Spring boot的一个小网站,发现使用FileUtils.class.getResource(path)来获取jar包中的资源文件并不能成功,其路径很奇怪 fil ...
- spring源码 — 二、从容器中获取Bean
getBean 上一节中说明了容器的初始化,也就是把Bean的定义GenericBeanDefinition放到了容器中,但是并没有初始化这些Bean.那么Bean什么时候会初始化呢? 在程序第一个主 ...
- java基础知识3--如何获取资源文件(Java中获取资源文件的url)
java开发中,常见的resource文件有:.xml,.properties,.txt文件等,后台开发中经常用到读取资源文件,处理业务逻辑,然后返回结果. 获取资源文件的方法说明getResourc ...
- C# 从类库中获取资源图片,把图片资源保存到类库中
/// <summary> /// 获取资源图片 /// </summary> public class AssemblyHelper { #region 常量 /// < ...
- Java中获取资源文件的方法总结
这里总结3中方法获取资源文件的 ServletContext Class ClassLoader 文件的位置 1. ServletContext public void doGet(HttpServl ...
随机推荐
- spring源码阅读(1)bean解析
public class Test { public static void main(String[] args) throws Exception { BeanFactory beanFactor ...
- [Ubuntu 16.04 LTS ]屏幕分辨率 Unknown display
新装完Ubuntu 16.04 LTS 通过System settings-->Displays 设置屏幕分辨率 显示"Unknown display",选择后无反应,并且屏 ...
- [POI 2015]Kinoman
Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[i]部. 你可以选择l,r(1<=l< ...
- NOIP 2008 双栈排序
题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1 ...
- ●SPOJ 7258 Lexicographical Substring Search
题链: http://www.spoj.com/problems/SUBLEX/题解: 后缀自动机. 首先,因为相同的子串都被存在了自动机的同一个状态里面,所以这就很自然的避免了重复子串的问题. 然后 ...
- ●POJ 1113 Wall
题链: http://poj.org/problem?id=1113 题解: 计算几何,凸包 题意:修一圈围墙把给出的点包围起来,且被包围的点距离围墙的距离不能小于L,求围墙最短为多少. 答案其实就是 ...
- Python的数据类型——字符串
一.字符串的误解 计算机系统的每个内存单元都是唯一并且连续的物理地址,字符串在内存中一旦创建就被 操作系统分配一块唯一并且连续的地址.计算机系统不允许我们修改字符串中的内容,一旦我想 试图进行修改,系 ...
- pix2code:从截图生成图形用户界面代码
将设计人员创建的图形用户界面截图转换为计算机代码是开发人员为构建定制的软件,网站和移动应用程序而进行的一项典型任务. 在本文中,我们展示了深入的学习方法可以用于训练一个端对端的模型,以便从三个不同的平 ...
- H3C系列之三层交换机系统版本升级
本文涉及到的硬件与软件交换机:H3C S3600-28TP-SItftp软件:tftpd32小软件升级的文件:S36SI_E-CMW310-R1702P44.zip 关于升级的文件说明如下: S36S ...
- IntelliJ IDEA的编译设置
好就之前遇到的bug,eclipse转idea时,idea不编译一个项目! 查了半天是IntelliJ IDEA的编译设置问题,不设置编译该文件,idea就不编译!