参见博客: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. Matlab矩阵学习二 矩阵的修改

    Matlab矩阵的修改 一.元素修改 (1).矩阵扩充   (2)矩阵删除某行或某列 删除某行:A(m,:)=[]   %删除A矩阵的第m行   删除某列: A(:,n)=[] %删除A矩阵的第n列 ...

  2. vc程序设计--图形绘制1

        利用绘图函数创建填充区.Windows通过使用当前画笔画一个图形的边界,然后用当前的刷子填充这个图形来创建-一个填充图形.共有三个填充图形,第一个是用深灰色画刷填充带圆角的矩形,第二个是采用亮 ...

  3. 学习scrapy框架爬小说

    一.背景:近期学习python爬虫技术,感觉挺有趣.由于手动自制爬虫感觉效率低,了解到爬虫界有先进的工具可用,尝试学学scrapy爬虫框架的使用. 二.环境:centos7,python3.7,scr ...

  4. Golang基础教程——map使用篇

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第7篇文章,我们来聊聊golang当中map的用法. map这个数据结构我们经常使用,存储的是key-value的键 ...

  5. 快速复习C语言 - 1变量与运算符

    变量与运算符 本篇以读者知道 int.char.float.double 等数据类型为前提条件. float 类型注意事项 float 类型数没有办法跟一个数真正比较是否相等,可以定义借助绝对值在一定 ...

  6. Java实现 LeetCode 676 实现一个魔法字典(暴力)

    676. 实现一个魔法字典 实现一个带有buildDict, 以及 search方法的魔法字典. 对于buildDict方法,你将被给定一串不重复的单词来构建一个字典. 对于search方法,你将被给 ...

  7. Java实现 LeetCode 466 统计重复个数

    466. 统计重复个数 定义由 n 个连接的字符串 s 组成字符串 S,即 S = [s,n].例如,["abc", 3]="abcabcabc". 另一方面, ...

  8. Java实现 蓝桥杯 历届试题 城市建设

    问题描述 栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修.市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他. C市中有n个比较重要的地点,市长希望这些地点重点被考虑.现在 ...

  9. Java实现第十届蓝桥杯不同子串

    试题 C: 不同子串 本题总分:10 分 [问题描述] 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串.例如,字符串aaab 有非空子串a, b, aa, ab, aaa, ...

  10. java实现第五届蓝桥杯切面条

    切面条 一根高筋拉面,中间切一刀,可以得到2根面条. 如果先对折1次,中间切一刀,可以得到3根面条. 如果连续对折2次,中间切一刀,可以得到5根面条. 那么,连续对折10次,中间切一刀,会得到多少面条 ...