• JNDI连接池连接Oracle数据库


    今天做了一个评论的小功能,要求用JNDI连接池连接Oracle数据库,以前只是测试了是否连接的上,现在没想到一个JNDI连接池连接Oracle数据库,纠结了好久,原来都是Oracle数据库的问题,这是过失。下面介绍一下JNDI连接池连接Oracle数据库。

    JNDI介绍
    什么是JNDI?
    JNDI(Java Naming and Directory Interface,Java命名和目录接口)
    是一组在Java应用中访问命名和目录服务的API
    通过名称将资源与服务进行关联
     
    什么是连接池技术?
     
    连接池
    连接池是在内存中预设好一定数量的连接对象,以备用户在进行数据库操作时直接使用
    性能
    数据库连接的建立、断开均由管理池统一管理
    连接池技术与传统数据库连接的比较
    数据库操作性能得到提升
    通过连接池管理数据库的连接与释放、提高了系统资源的使用效率
     
    为什么使用连接池?
    Ø传统数据库连接方式的不足
    Ø每一次请求时均需要与数据库进行连接,资源占用较多
    Ø当并发访问数量较大时,网站速度收到极大影响
    Ø在访问结束后必须要关闭连接释放资源
    Ø系统的安全性和稳定性相对较差
     
    企业级开发需要稳健和高效的数据访问层
    完成对数据库的CRUD操作
    能够处理数据库发生的各种错误
    可以灵活的修改配置
    提供方便使用的工具
    高性能
     
    访问数据源
    第一步:Tomcat的conf/context.xml中的配置
     加入数据库驱动文件
    把数据库驱动的.jar文件,加入到Tomcat的commonlib中
    应用程序的web.xml文件的配置
    在web.xml中配置<resource-ref>
    <?xml version='1.0' encoding='utf-8'?>
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      contributor license agreements.  See the NOTICE file distributed with
      this work for additional information regarding copyright ownership.
      The ASF licenses this file to You under the Apache License, Version 2.0
      (the "License"); you may not use this file except in compliance with
      the License.  You may obtain a copy of the License at
    
          http://www.apache.org/licenses/LICENSE-2.0
    
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.
    -->
    <!-- The contents of this file will be loaded for each web application -->
    <Context>
    
        <!-- Default set of monitored resources -->
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        
        <!-- Uncomment this to disable session persistence across Tomcat restarts -->
        <!--
        <Manager pathname="" />
        -->
    
        <!-- Uncomment this to enable Comet connection tacking (provides events
             on session expiration as well as webapp lifecycle) -->
        <!--
        <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
        -->
    
    --红色字体是需要根据数据库名配置
    <Resource name="jdbc/liuyan" auth="Container"
    type="javax.sql.DataSource" maxActive="100"
    maxIdle="30" maxWait="10000" username="epet" password="123456"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:@localhost:1521:orcl"
    />
    </Context>
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    
    /** 
     * 文件名:JNDI.java
     * 描    述:这是一个数据库连接类
     * 作    者:WLX
     * 所属项目:MyNews
     * JDK版本:JDK1.7 
     * 创建时间:2015年5月23日 下午2:54:24
     *
    */
    public class JNDI {
    
        public Connection getconn() {
            
            Connection conn = null;
            try {
                
                Context ctx;
                ctx = new InitialContext();
                //java:comp/env/为前缀
                DataSource source = (DataSource)ctx.lookup("java:comp/env/jdbc/liuyan");
            
                Connection connection = source.getConnection();
                if(connection != null){
                    conn = connection;
                }
                
            } catch (NamingException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return conn;
        }
    
    }
     
     
  • 相关阅读:
    Python 两个list合并成一个字典
    python 取列表(数组)偶数和奇数位置的值
    爬虫-Xpath语法笔记-转载
    详解Python requests 超时和重试的方法-转载
    6种负载均衡算法-转载
    python学习点滴记录-Day22
    python学习点滴记录-Day21-项目
    python学习点滴记录-Day20(分页、cookie/session、ajax)
    vimrc
    使用 find 命令实现高级排除需求
  • 原文地址:https://www.cnblogs.com/wlx520/p/4524861.html
Copyright © 2020-2023  润新知