JNDI的专业解释,大家自行去网络搜索吧,这里就不啰嗦了。

单纯从使用角度看,可以简称把它看成一个key-value的“哈希资源”容器。给定一个string类型的key,可以把任何类型的value,放入这个容器(通过bind/rebind方法);其它地方需要使用该资源时,根据key就能取出该资源(通过lookup方法)

JNDI使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package jmyang.weblogic;
  
/**
 * <p>Title:JNDI示例(WebLogic环境) </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2012</p>
 * <p>Company:cnblogs </p>
 * @菩提下的杨过
 * @version 1.0
 */
  
import javax.naming.*;
import java.util.Hashtable;
  
public class JNDITest {
  
    static Context ctx = null;
  
    public static void test() {
        String key = "jmyang";
  
        //先绑定
        bind(key, "杨俊明");
  
        //再取出来
        String value = (String) lookUp(key);
  
        System.out.print(key + "=" + value);
    }
  
    /*
     *绑定
     */
    public static void bind(String name, String object) {
        Hashtable ht = new Hashtable();
        ht.put(Context.INITIAL_CONTEXT_FACTORY,
               "weblogic.jndi.WLInitialContextFactory");
        ht.put(Context.PROVIDER_URL, "t3://localhost:7001");
        try {
            ctx = new InitialContext(ht);
            ctx.rebind(name, object);
        } catch (NamingException e) {
            e.printStackTrace();
        } finally {
            try {
                ctx.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
  
    /*
     *
     */
    public static Object lookUp(String name) {
        Hashtable ht = new Hashtable();
        ht.put(Context.INITIAL_CONTEXT_FACTORY,
               "weblogic.jndi.WLInitialContextFactory");
        ht.put(Context.PROVIDER_URL, "t3://localhost:7001");
        try {
            ctx = new InitialContext(ht);
            Object object = ctx.lookup(name);
            return object;
        } catch (Exception e) {} finally {
            try {
                ctx.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}

上述代码执行完以后,也可能通过weblogic控制台,查看jndi树来验证:

JDBC数据源,实际上,也是使用JNDI服务来访问的,下面是JDBC示例代码:(必须先在weblogic中创建数据源)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package jmyang.weblogic;
  
/**
 * <p>Title:JDBC示例(WebLogic环境) </p> 
 * <p>Description: </p> 
 * <p>Copyright: Copyright (c) 2012</p>
 * <p>Company:cnblogs </p>
 * @菩提下的杨过
 * @version 1.0
 */
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import java.util.Hashtable;
  
public class JDBCTest {
  
    static final String webLogicServer = "t3://localhost:7001"; //weblogic服务器地址
    static final String webLogicINDIStr =
            "weblogic.jndi.WLInitialContextFactory"
  
    public static void test() {
        Connection myConn = null;
        DataSource ds = null;
        Context ctx = null;
  
        Hashtable ht = new Hashtable();
        ht.put(Context.INITIAL_CONTEXT_FACTORY, webLogicINDIStr);
        ht.put(Context.PROVIDER_URL, webLogicServer);
        try {
            ctx = new InitialContext(ht);
            ds = (javax.sql.DataSource) ctx.lookup("infoskysso"); //取得名为infoskysso的数据源(注:infoskysso要在weblogic中设置数据源)
        } catch (NamingException e) {
            e.printStackTrace();
        }
  
        Statement myStatement = null;
        ResultSet myResultSet = null;
  
        try {
            myConn = ds.getConnection();//建立连接
  
            myStatement = myConn.createStatement();
            myResultSet = myStatement.executeQuery(
                    "Select DEPTNO From DEPT where rownum<=10");
  
            while (myResultSet.next()) {
                System.out.println("DEPTNO=" + myResultSet.getInt("DEPTNO"));
            }
            myResultSet.close();
        } catch (SQLException e) {
            System.out.println("Error code = " + e.getErrorCode());
            System.out.println("Error message = " + e.getMessage());
        } finally {
              
            //关闭查询
            if (myStatement != null) {
                try {
                    myStatement.close();
                } catch (SQLException e) {
                    System.out.println("Error code = " + e.getErrorCode());
                    System.out.println("Error message = " + e.getMessage());
                }
            }
  
            //关闭连接
            if (myConn != null) {
                try {
                    myConn.close();
                } catch (SQLException e) {
                    System.out.println("Error code = " + e.getErrorCode());
                    System.out.println("Error message = " + e.getMessage());
                }
            }
        }
  
    }
}

附: weblogic中创建jdbc数据源的方法

weblogic下JNDI及JDBC连接测试(weblogic环境)的更多相关文章

  1. 在 windows 下搭建 IDEA + Spark 连接 Hive 的环境

    为了开发测试方便,想直接在 IDEA 里运行 Spark 程序,可以连接 Hive,需不是打好包后,放到集群上去运行.主要配置工作如下: 1. 把集群环境中的 hive-core.xml, hdfs- ...

  2. 大数据系列之数据仓库Hive命令使用及JDBC连接

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  3. jdbc:mysql:/// jdbc连接数据url简写方式

    正常情况下我们写jdbc连接本地mysql数据库的时候通常是这样写 jdbc:mysql:localhost:3306/数据库名 下面就是要提到的简单的方法 jdbc:mysql:///数据库名

  4. linux环境下使用jmeter进行压力测试

    linux环境下使用jmeter进行压力测试 linux环境下使用就meter进行压力测试: linux环境部署: 在Linux服务器先安装jdk: 2.以jdk-8u172-linux-x64.ta ...

  5. 帆软报表FineReport中数据连接之Weblogic配置JNDI连接

    1. 制作报表的原理 在帆软报表FineReport设计器中先用JDBC连接到数据库,建立数据库连接,然后用SQL或者其他方法创建数据集,使用数据集制作报表,然后把建立的数据库连接从JDBC连接改成J ...

  6. J2EE 关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题

    J2EE 关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题 2012年03月09 ...

  7. 测试jdbc连接下,mysql和mycat的吞吐性能

    最近一个项目需要数据库有较大的吞吐量,因为项目要求的访问量和数据量较大,决定采用一个数据库中间件来对数据库进行管理.经过一番查询,决定使用阿里的一个开源项目-mycat.因为mycat基于mysql, ...

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

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

  9. WebLogic配置JNDI数据源

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

随机推荐

  1. 解决 vboxdrv.sh: failed: Cannot change group vboxusers for device /dev/vboxdrv.

    来自:https://blog.csdn.net/su_cicada/article/details/86773043 virtualbox 报错 ,看提示让执行以下 sudo /sbin/vboxc ...

  2. tensorflow 模型权重导出

    tensorflow在保存权重模型时多使用tf.train.Saver().save 函数进行权重保存,保存的ckpt文件无法直接打开,不利于将模型权重导入到其他框架使用(如Caffe.Keras等) ...

  3. DataTable 递归 简单的程序,来实现无限级列表 结合 jquery.table.js 实现

    protected void DiGuiDataTable(DataTable FromDataTable, DataTable ToDataTable, object pid) { ) { fore ...

  4. 20155227 2016-2017-2 《Java程序设计》第一周学习总结

    20155227 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 浏览教材,根据自己的理解每章提出一个问题 Java三个平台的区别. JDK.JRE.JVM区 ...

  5. 2017-2018-1 20155230 《信息安全技术》实验二——Windows口令破解

    2017-2018-1 20155230 <信息安全技术>一.Windows口令破解 1.字典破解 (1)为本机创建新用户.为了达到实验效果,用户口令不要设置得过于复杂,可以选择自己的生日 ...

  6. PostgreSQL参数学习:wal_keep_segments

    http://www.postgresql.org/docs/9.3/static/runtime-config-replication.html 参考官方文档: wal_keep_segments ...

  7. day8 opencv3 ,没有GMG MOG

    Traceback (most recent call last): File , in <module> fgbg = cv2.createBackgroundSubtractorGMG ...

  8. postgresql parallel join example

    CREATE TABLE public.pgbench_accounts_bak ( aid integer NOT NULL, bid integer, abalance integer, fill ...

  9. 质造未来,首届腾讯WeTest技术交流开放日成功举办

    WeTest 导读 北京时间12月21日下午1点整,2018年度腾讯WeTest技术交流开放日在上海举办.盛大.巨人.电魂.bilibili.方趣等十余家来自不同优秀企业的测试技术负责人均来到现场,共 ...

  10. 深入理解C++中的Const,Mutable以及Volatile

    我一直认为const表示一个常量,常量就是一个无法被修改的值,但是没有深入理解const的实现,甚至不知道mutable和volatile的存在,最近在书中看到了这一部分的知识,所以本文将详细解析这几 ...