参见博客:https://blog.csdn.net/acmman/article/details/70146603

参考视频教程:

一、什么是jndi数据源
JNDI是Java命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一。

我们平时开发web程序的时候,在连接数据库的时候,往往会编写一个连接数据库的类,
例如连接Mysql的类:

  1. package cn.edu.hpu.util;
  2.  
     
  3.  
    import java.sql.Connection;
  4.  
    import java.sql.DriverManager;
  5.  
    import java.sql.ResultSet;
  6.  
    import java.sql.SQLException;
  7.  
    import java.sql.Statement;
  8.  
     
  9.  
    public class DB {
  10.  
    // 定义MySQL的数据库驱动程序
  11.  
    public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
  12.  
    //定义mysql的数据库连接地址:
  13.  
    public static final String DBDURL = "jdbc:mysql://localhost:3306/iqweb" ;
  14.  
    //mysql数据库的连接用户名
  15.  
    public static final String DBUSER = "root" ;
  16.  
    //mysql数据库的连接密码
  17.  
    public static final String DBPASS = "1234" ;
  18.  
     
  19.  
    static{
  20.  
    try {
  21.  
    Class.forName(DBDRIVER);
  22.  
    } catch (ClassNotFoundException e) {
  23.  
    // TODO Auto-generated catch block
  24.  
    e.printStackTrace();
  25.  
    }
  26.  
    }
  27.  
     
  28.  
    public static Connection getConnection(){
  29.  
    Connection conn=null;
  30.  
    try {
  31.  
    conn=DriverManager.getConnection(DBDURL,DBUSER,DBPASS);
  32.  
    } catch (SQLException e) {
  33.  
    // TODO Auto-generated catch block
  34.  
    e.printStackTrace();
  35.  
    }
  36.  
    return conn;
  37.  
    }
  38.  
     
  39.  
    public static void close(ResultSet rs,Statement st,Connection conn){
  40.  
     
  41.  
    try {
  42.  
     
  43.  
    if(rs!=null){
  44.  
    rs.close();
  45.  
    }
  46.  
    if(st!=null){
  47.  
    st.close();
  48.  
    }
  49.  
    if(conn!=null){
  50.  
    conn.close();
  51.  
    }
  52.  
    } catch (SQLException e) {
  53.  
    // TODO Auto-generated catch block
  54.  
    e.printStackTrace();
  55.  
    }
  56.  
     
  57.  
    }
  58.  
     
  59.  
    public static void close(Statement st,Connection conn){
  60.  
    close(null,st,conn);
  61.  
    }
  62.  
    }

--------------------- 本文来自 光仔December 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/acmman/article/details/70146603?utm_source=copy

上面的代码存在一个问题:每一次应用程序访问数据库都去创建一个connect,很消耗数据库的资源

如何解决了,采用数据库连接池

应用程序获得connect都是从连接池中获得,不在自己操作db获得connect,数据库连接池就好像线程池原理一样。

我们可以不用编写数据库连接池,现在有开源的数据库连接池

除了上面的c3p0等数据库连接池之外,weblogic也提供了数据库连接池,weblogic的数据库连接池是通过jndi容器进行管理的,需要进行配置,weblogic将数据库连接池存储

在jndi容器中,可以通过jndi获得weblogic的连接池

接下面我们来看看如何通过weblogic创建连接池

二、新建Mysql的JNDI数据源
访问http://localhost:7001/console/,登录进入WebLogic控制台主页。
点击左侧“域结构”下的“服务”下的“数据源”选项:

选择新建,一般数据源。

填写数据源的名称,JNDI名称以及选择数据库类型:

选择数据库驱动版本:

其它配置按照默认即可:

填写数据库的连接信息:

接下来点击测试配置,看一下是否能连接成功:

出现“连接测试成功”即表示数据库配置没有问题。
点击下一步,勾选服务器。

点击完成之后,我们服务器端的JNDI数据源就配置完毕了。

三、应用程序引用WebLogic的jndi数据源
我们在MyEclipse中创建一个WebProject测试工程:

我们在src中创建一个数据库连接类:


编写该连接类:

  1.  
    package com.cn.opensource.dbConn;
  2.  
     
  3.  
    import java.sql.Connection;
  4.  
    import java.sql.SQLException;
  5.  
    import java.util.Properties;
  6.  
     
  7.  
    import javax.naming.Context;
  8.  
    import javax.naming.InitialContext;
  9.  
    import javax.sql.DataSource;
  10.  
     
  11.  
    public class DatabaseConnection {
  12.  
    //初始化上下文需要用到的工厂类
  13.  
    private final static String INITIAL_CONTEXT_FACTORY="weblogic.jndi.WLInitialContextFactory";
  14.  
    //WebLogic服务器的访问地址
  15.  
    private final static String PROVIDER_URL="t3://127.0.0.1:7001";
  16.  
    //WebLogic服务器中的JNDI数据源名称
  17.  
    private final static String MYSQL_JNDI_NAME="JNDI-MySqlDataSource";
  18.  
     
  19.  
     
  20.  
    //存储从JNDI容器中取出来的数据源
  21.  
    private static DataSource dsOracle = null;
  22.  
    private static DataSource dsMySQL = null;
  23.  
     
  24.  
    static {
  25.  
    try {
  26.  
    //初始化WebLogic Server的JNDI上下文信息
  27.  
    Context context = getInitialContext();
  28.  
    //获取数据源对象
  29.  
    dsMySQL = (DataSource) context.lookup(MYSQL_JNDI_NAME);
  30.  
    } catch (Exception e) {
  31.  
    e.printStackTrace();
  32.  
    }
  33.  
    }
  34.  
     
  35.  
    /**
  36.  
    * MethodName: getInitialContext
  37.  
    * Description: 获得WebLogic ServerJNDI初始上下文信息
  38.  
    * @return
  39.  
    * @throws Exception
  40.  
    */
  41.  
    private static Context getInitialContext() throws Exception {
  42.  
    Properties properties = new Properties();
  43.  
    //指定工厂类
  44.  
    properties.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);
  45.  
    //指定服务器访问地址
  46.  
    properties.put(Context.PROVIDER_URL, PROVIDER_URL);
  47.  
    return new InitialContext(properties);
  48.  
    }
  49.  
     
  50.  
     
  51.  
    /**
  52.  
    * MethodName: getMySQLConnection
  53.  
    * Description: 获取MySQL数据库连接
  54.  
    * @return
  55.  
    * @throws SQLException
  56.  
    */
  57.  
    public static Connection getMySQLConnection() throws SQLException {
  58.  
    return dsMySQL.getConnection();
  59.  
    }
  60.  
     
  61.  
     
  62.  
    /**
  63.  
    * MethodName: CloseConnection
  64.  
    * Description: 关闭数据库连接
  65.  
    * @return
  66.  
    * @throws SQLException
  67.  
    */
  68.  
    public static void Close()throws SQLException {
  69.  
    if(dsMySQL!=null){
  70.  
    dsMySQL.getConnection().close();
  71.  
    }
  72.  
    }
  73.  
    }

然后,我们创建一个Servlet,测试数据库是否连接成功并取到数据:

---------------------

本文来自 光仔December 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/acmman/article/details/70146603?utm_source=copy

客户端访问的代码如下:

上面是采用的java代码直接进行操作,如果是在j2ee中如何通过配置文件获得数据库连接池了

获取JNDI数据源
    如果应用配置在高性能的应用服务器(如WebLogic或Websphere等)上,我们可能更希望使用应用服务器本身提供的数据源。应用服务器的数据源使用JNDI开放调用者使用,Spring为此专门提供引用JNDI资源的JndiObjectFactoryBean类。下面是一个简单的配置:

---------------------

本文来自 tingyuanss 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/tingyuanss/article/details/44940061?utm_source=copy

通过jndiName指定引用的JNDI数据源名称。
    Spring 2.0为获取J2EE资源提供了一个jee命名空间,通过jee命名空间,可以有效地简化J2EE资源的引用。下面是使用jee命名空间引用JNDI数据源的配置:

  1. <beans xmlns=http://www.springframework.org/schema/beans
  2. xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
  3. xmlns:jee=http://www.springframework.org/schema/jee
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  6. http://www.springframework.org/schema/jee
  7. http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
  8. <jee:jndi-lookup id="dataSource" jndi-name=" java:comp/env/jdbc/bbt"/>
  9. </beans>

只需要配置:

<jee:jndi-lookup id="dataSource" jndi-name=" java:comp/env/jdbc/bbt"/>

--------------------- 本文来自 tingyuanss 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/tingyuanss/article/details/44940061?utm_source=copy

【WebLogic使用】3.WebLogic配置jndi数据源的更多相关文章

  1. WebLogic使用总结(三)——WebLogic配置JNDI数据源

    一.在WebLogic新建针对Oracle数据库的JNDI数据源 进入weblogic管理控制台,此处是远程访问:http://192.168.1.144:7001/console 点击左侧[ 域结构 ...

  2. WebLogic配置JNDI数据源

    一.什么是jndi数据源 JNDI是Java命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一. 我们平时开发web程序的时候, ...

  3. JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源

    com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...

  4. JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源

    一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar

  5. Tomcat配置JNDI数据源

    经过3个多小时的努力,配置JNDI数据源(主要是通过DBCP连接池)终于搞定-还是Tomcat官方的说明好,不过全是英文的,大概还看得懂.百度上那么花花绿绿的太多了,一个也没成功!...本例使用的数据 ...

  6. Tomcat下使用Druid配置JNDI数据源

    com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...

  7. Tomcat下使用C3P0配置JNDI数据源(在项目的META-INF目录下创建context.xml的文件)

    一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar 下载完成之后得到一个压缩包

  8. JNDI学习总结——Tomcat下使用C3P0配置JNDI数据源

    一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar

  9. 配置JNDI数据源

    配置JNDI数据源: 在MATE-INF中新建一个context.xml <?xml version="1.0" encoding="UTF-8"?> ...

  10. JNDI学习总结(4)——Tomcat下使用Druid配置JNDI数据源

    com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...

随机推荐

  1. 【转】DataFrame合并

    参考:python 把几个DataFrame合并成一个DataFrame——merge,append,join,conca 横向合并(扩展列):merge,类似SQL的join,内连接,外连接等. 纵 ...

  2. PETS渗透测试标准总结

    国外的标准框架,感觉大部分渗透公司的测试指南都是从这俩借鉴的,正好复习下. 国外渗透测试标准:http://www.pentest-standard.org 渗透测试分为:前期交互,情报搜集,威胁建模 ...

  3. 文件包含漏洞(file inclusion)

    文件包含漏洞原理:(php) 是指当服务器开启allow_url_include选项的时候,通过php某些特性函数.如include().include_once().require().requir ...

  4. Java 第十一届 蓝桥杯 省模拟赛 字母重新排列

    字母重新排列 题目 问题描述 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO.AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义. 请问,总共能排列如多少个 ...

  5. (Java实现) 删数问题

    删数问题(需知道的数学定理) 给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新 的正整数.对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最 小的 ...

  6. Java实现 蓝桥杯 算法提高 概率计算

    算法提高 概率计算 时间限制:1.0s 内存限制:256.0MB 问题描述 生成n个∈[a,b]的随机整数,输出它们的和为x的概率. 输入格式 一行输入四个整数依次为n,a,b,x,用空格分隔. 输出 ...

  7. Java实现 LeetCode 414 第三大的数

    414. 第三大的数 给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大 ...

  8. Java实现 蓝桥杯VIP 算法训练 麦森数

    算法训练 麦森数 时间限制:1.0s 内存限制:256.0MB 问题描述 形如2P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2P-1不一定也是素数.到1998年底, ...

  9. Java实现 LeetCode 131 分割回文串

    131. 分割回文串 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回 s 所有可能的分割方案. 示例: 输入: "aab" 输出: [ ["aa ...

  10. Java实现 LeetCode 110 平衡二叉树

    110. 平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1. 示例 1: 给定二叉树 [3,9 ...