当前位置:首页 > 开发 > 研发管理 > 正文

全局数据源

发表于: 2014-11-09   作者:AILIKES   来源:转载   浏览:
摘要: 实验目的:为了研究两个项目同时访问一个全局数据源的时候是创建了一个数据源对象,还是创建了两个数据源对象。 1:将diuid和mysql驱动包(druid-1.0.2.jar和mysql-connector-java-5.1.15.jar)copy至%TOMCAT_HOME%/lib下;2:配置数据源,将JNDI在%TOMCAT_HOME%/conf/context.xml中配置好,格式如下:&l

实验目的:为了研究两个项目同时访问一个全局数据源的时候是创建了一个数据源对象,还是创建了两个数据源对象。

1:将diuid和mysql驱动包(druid-1.0.2.jar和mysql-connector-java-5.1.15.jar)copy至%TOMCAT_HOME%/lib下;
2:配置数据源,将JNDI在%TOMCAT_HOME%/conf/context.xml中配置好,格式如下:
<Resource
        auth="Container"
        driverClassName="com.mysql.jdbc.Driver"
        factory="com.alibaba.druid.pool.DruidDataSourceFactory"
        maxActive="20"
        maxIdel="10"
        maxWait="1000"
        name="jdbc/snf-paiDS"
        password="adminone"
        type="javax.sql.DataSource"
        url="jdbc:mysql://10.27.82.169/pai?zeroDateTimeBehavior=convertToNull" />
<ResourceLink global="jdbc/snf-paiDS " name="jdbc/snf-paiDS" type="javax.sql.DataSource" />
3:在web.xml中配置druid的监控servletMapping:
    <servlet>
        <servlet-name>DruidStatView</servlet-name>
        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DruidStatView</servlet-name>
        <url-pattern>/druid/console/*</url-pattern>
    </servlet-mapping>
4:启动启动空的tomcat,如果启动成功,说明配置正确;
5:在eclipse中关联tomcat,(注意关联后的配置,应为已按上面步骤配置好的)。
6:创建一个空的项目,用来访问数据源。
7:新建一个servlet,并在web.xml中配好servletMapping,例如:
【JAVA代码:】
public class HoldConnection extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private DataSource        ds; //声明数据源
    private List<Connection>  c                = new ArrayList<Connection>(); //存放连接,防止被垃圾回收器回收
    public HoldConnection() {
        super();
        try {
            Context ic = new InitialContext();
            ds = (DataSource) ic.lookup("java:comp/env/jdbc/snf-paiDS");//访问JNDI
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response) throws ServletException, IOException {
        try {
            DruidPooledConnection conn = (DruidPooledConnection) ds.getConnection();//创建druid链接
            DruidDataSource dds = (DruidDataSource) ds; //创建druid的数据源
            c.add(conn);//放入list中,防止被回收
            System.out.println(ds);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    protected void doPost(HttpServletRequest request,
                          HttpServletResponse response) throws ServletException, IOException {
            doGet( request, response);
    }
}
【web.xml配置:】
    <servlet>
        <servlet-name>ds</servlet-name>
        <servlet-class>com.suning.phl.dbcp.HoldConnection</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ds</servlet-name>
        <url-pattern>/ds/*</url-pattern>
    </servlet-mapping>
8:将项目发布到tomcat中启动;
9:访问HoldConnection;
10:访问druid控制台,查看数据源对象。
11:再新建一个项目,重复上面第6-8步;
12:重新访问两个项目中的HoldConnection(注意路径不要一样),然后再访问druid控制台,查看数据源对象,此时发现:创建了两个数据源对象,
由此可以得出结论,在容器中配置的数据源,通过不同的项目实例访问会创建不同的数据源对象。
假设:数据库的连接数最大值设置为1000,容器中的连接数配置为1000.如果只有一个实例访问数据源,那么是没有问题的。
假设有两个实例访问数据源,如果两个实例的总连接数之和大于1000,那么超出的部分是没办法进行数据库访问的。

案例如下:

数据源对象研究案例

 

全局数据源

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
这篇文章依然以Springside3的mini-web为例(数据库采用oracle) 一、使用WebLogic的dataSource获取数
这篇文章依然以Springside3的mini-web为例(数据库采用oracle) 一、使用WebLogic的dataSource获取数
这篇文章依然以Springside3的mini-web为例(数据库采用oracle) 一、使用WebLogic的dataSource获取数
这篇文章依然以Springside3的mini-web为例(数据库采用oracle) 一、使用WebLogic的dataSource获取数
1.定义一个全局资源文件,如下 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx
2.3.1 定义数据源 这是创建数据立方的第1步。在“解决方案资源管理器”中的“数据源”文件夹上单击
原文链接:http://club.topsage.com/forum.php?mod=viewthread&tid=2549653 一、数据源简介: 在jav
声明: 原创作品, 转载时请注明文章来自 SAP师太 技术博客( 博/客/园www.cnblogs.co
本例效果图: 此例回复 maxcool(我坚定的支持者与监督者, 离不开你呀!) 在 http://www.cnblogs.com/d
1. Hellow hadoop~~! Hadoop(某人儿子的一只虚拟大象的名字)是一个复杂到极致,又简单到极致的东西
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号