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的common\lib中

应用程序的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;
    }

}
时间: 2024-10-18 14:00:45

JNDI连接池连接Oracle数据库的相关文章

springboot---整合druid连接池---连接oracle数据库---整合mybatis---整合thymeleaf---日志配置

目录 在新建的springboot项目pom文件中新添druid连接池的依赖 在application.properties配置文件中添加配置 配置静态文件目录和模板文件目录 @(springboot---整合druid连接池---连接oracle数据库---整合mybatis---整合thymeleaf---日志配置) 在新建的springboot项目pom文件中新添druid连接池的依赖 <!-- druid数据库连接池 --> <dependency> <groupId

Hibernate 配置连接MySQL/SQLServer/Oracle数据库

用Hibernate配置连接数据库可以方便我们对POJO的操作,节省了很多时间和代码.下面就分别说明连接不同数据库需要在hibernate.cfg.xml做的配置. 需要数据库驱动包可以点击这里下载:数据库Jar包下载地址:http://pan.baidu.com/s/1jGKEEY6  密码:okq0 1.Hibernate连接MySQL数据库 1 <?xml version='1.0' encoding='UTF-8'?> 2 <!DOCTYPE hibernate-configur

使用dbutils的PooledDB连接池,操作数据库

使用dbutils的PooledDB连接池,操作数据库. 这样就不需要每次执行sql后都关闭数据库连接,频繁的创建连接,消耗时间 如果是使用一个连接一直不关闭,多线程下运行一段时间后很容易出现OperationalError: (2006, ‘MySQL server has gone away’)这个错误. 使用PooledDB解决. # coding=utf-8 """ 使用DBUtils数据库连接池中的连接,操作数据库 OperationalError: (2006,

一次c3p0连接池连接异常错误的排查

最近写了一个数据库采集程序,大概过程是将SQLSERVER数据库的数据定时采集到Oracle数据库.1小时出一次数据,每次数据量在2W左右.环境采用Sping3+hibernate4,数据库连接池采用C3p0 奇怪的时候每隔一段时间都会报:"c3p0 connection is already closed" 我开始的数据库连接池配置如下:oracle数据库开启事务,而采集的sqlserver数据库没有开启事务 jdbc.driverClass=oracle.jdbc.OracleDr

连接池 连接 数据源

数据源--getConnection()JNDI 获取数据源数据源在tomcat容器的conf文件夹 context.xml配置<Resource name="jdbc/news" author="Container" type="javax.sql.DataSource"maxActive="100"连接池的最大数据库连接数.设为0表示无限制.maxIdle="30"最大空闲数,数据库连接的最大空闲

python通过连接池连接redis,操作redis队列

在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多.所以为了节省资源,减少多次连接损耗,连接池的作用相当于缓存了多个客户端与redis服务端的连接,当有新的客户端来进行连接时,此时,只需要去连接池获取一个连接即可,实际上连接池就是把一个连接共享给多个客户端,可以说是广播,要用的话就去接收. #-*-coding:utf-8-*- import redis # 连接池连接使用,节省了每次连接用的时间

Myeclipse WEB工程JSP使用JNDI 数据库连接池连接Mysql数据库

在网上查了很多,最后实现了.下面写一下过程: 首先,在WEBROOT/META-INF下建一个文件context.xml,内容为: <?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/ConnectionPool" auth="Application" type="javax.sql.DataSour

记录关于使用ADO.NET 连接池连接Oracle时Session信息不更新的坑

最近的一个项目中,由于界面查询的数据量比较大,关联的表比较多,有些数据查出来需要临时保存起来供后面的查询使用,于是想到了用oracle的临时表来实现这个需求.大家都知道,oracle的临时表有两种:事务级别临时表和会话级别临时表,我这里使用的是会话级别的临时表.当时把功能时候后就以为万事大吉了,没想到就在这里买下了一个坑.  坑的浮现:之后在为系统加调试日志时偶然发现了临时表的数据没有像oracle临时表的定义那样“不同会话独享临时表,临时表的数据在会话结束后被自动清空”.首先看第一次查询的日志

Java创建连接池连接不同数据库

在一个应用里面,可能涉及到连接多个不同数据库进行操作,而每次连接写不同的实现会很麻烦.前面已经会了用JDBC连接数据库,那么利用反射和工厂模式,可以实现连接不同的数据库,这样处理起来将会很方便.同时建造数据库连接池,处理多个业务数据处理. 那么具体怎么实现呢,下面一起来看一下: 整体结构如下: 第一步,先处理连接不同数据库 1.首先,将数据库配置信息创建一个公用类:JdbcUrl.java 主数据库可以用默认的构造方法,如果是连接其他库,则通过传递参数的方式来处理. 数据库参数有如下几个: 1