mybatis源码学习之org.apache.ibatis.datasource.jndi包

文章内容和参考博文来源:

1 mybatis源码jar包–package org.apache.ibatis.datasource.jndi;
2 http://blog.csdn.net/reliveit/article/details/45136297
3 http://www.cnblogs.com/V1haoge/p/6675700.html
4 Spring 实战(第四版)第十章 通过spring和jdbc征服数据库
5 http://kingxss.iteye.com/blog/1481872

前言:

jndi方式配置数据源的方式还是很少见的,因为需要在项目之外的容器或服务上修改相应的配置文件,后期可能不便于部署项目,但是这个问题也有对应的解决办法,为了提高项目的可移植性,可以讲服务器上修改的配置文件内容放入到工程的META-INF目录的context.xml中(这个文件需要自行建立).总归而言,jndi方式配置数据源方式还是针对特定的需求来做的,比如说服务器性能很好.

在本文只是简单的介绍org.apache.ibatis.datasource.jndi包下JndiDataSourceFactory 工厂类的实现过程,以及具体运用和使用过程,至于涉及的一些底层原理以及一些常见模式,在本文先不做讨论,后续会针对org.apache.ibatis.datasource整个包做一些简要的分析.package org.apache.ibatis.datasource.jndi包下的源码本身不难,但是个人感觉对于一些知识点,提前了解一下,会很快就能了解org.apache.ibatis.datasource.jndi包下JndiDataSourceFactory类的实现过程.当前介绍的mybatis版本为:mybatis-3-mybatis-3.4.4.

前置知识点:

(1)jndi的概念: http://baike.baidu.com/item/JNDI?fr=aladdin

(2)Properties类和InitialContext类和Context类或接口中的方法功能以及大概实现过程.

(3)最好能找一下mybatis的Jndi+Tomcat配置数据源的大概过程,去和mybatis的pooled池型数据源以及unpooled非池型数据源的使用过程对比以下.

1、源码结构图:

这里写图片描述

2、mybatis的jndi形式的数据源使用步骤

在介绍具体源码的细节之前,先来说一下mybatis的jndi形式的数据源的使用步骤和一些细节问题,这样如果只是想了解如何使用mybatis的jndi方式去配置数据源,就不用继续看下面的源码分析了.在spring中使用jndi方式配置数据源大概分为下面几个步骤:

第一步:添加数据源信息到tomcat的conf目录下的server.xml或context.xml文件中,两者选择一个.

第二步:在Spring的配置文件,如applicationContext.xml配置文件中,引入jndi配置方式.

第三步:测试从spring中拿到datasource.

第一步:添加数据源信息到tomcat的conf目录下的server.xml或context.xml文件中,两者选择一个.

首先说明一下使用情形,是在spring框架的去使用JNDI数据源.因为spring项目经常部署在Java EE应用服务器中,如WebSphere,JBoss或甚至像Tomcat这样的Web容器中.这些服务器允许你配置通过JNDI获取数据源.这种配置的好处在于数据源完全可以在应用程序之外进行管理,这样应用程序只需在访问数据库的时候查找数据源就可以了.另外,在应用服务器中管理的数据源通常以池的方式组织,从而具备更好的性能,并且还支持系统管理员对其进行热切换.
第一步分为三种方式实现:

第一种方式:

在tomcat中的server.xml添加的代码如下形式:
<Context>
    <Resource name="hello" auth="Container" type="javax.sql.DataSource"
        maxActive="100" maxIdle="30" maxWait="10000" 
        username="postgres"
        password="123456" 
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://127.0.0.1:5432/center_db" />
  </Context>

第二种方式:

在context.xml添加的代码如下形式:
<Resource name="hello" auth="Container" type="javax.sql.DataSource"
        maxActive="100" maxIdle="30" maxWait="10000" 
        username="postgres"
        password="123456" 
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://127.0.0.1:5432/center_db" />  

第三种方式:

在META-INF目录下新建的context.xml中(这个文件需要自行建立)
<?xml version="1.0" encoding="UTF-8"?>  
<Context>  
      <Resource name="hello"    
        auth="Container"    
        type="javax.sql.DataSource"     
        driverClass="org.postgresql.Driver"      
        jdbcUrl="jdbc:postgresql://127.0.0.1:5432/center_db"   
        user="postgres"    
        password="123456"    
        maxPoolSize="10"    
        minPoolSize="2"    
        acquireIncrement="2" />  
</Context>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值