java学习:weblogic下JNDI及JDBC连接测试(weblogic环境)

简介: JNDI的专业解释,大家自行去网络搜索吧,这里就不啰嗦了。 单纯从使用角度看,可以简称把它看成一个key-value的“哈希资源”容器。给定一个string类型的key,可以把任何类型的value,放入这个容器(通过bind/rebind方法);其它地方需要使用该资源时,根据key就能取出该资源(通过lookup方法) JNDI使用示例: package jmyang.

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

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

JNDI使用示例:

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中创建数据源)

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数据源的方法

目录
相关文章
|
1天前
|
存储 算法 搜索推荐
滚雪球学Java(27):从零开始学习数组:定义和初始化
【5月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
7 3
|
2天前
|
移动开发 JavaScript 前端开发
学习vue3使用在线官方开发环境play.vuejs.org进行测试
学习vue3使用在线官方开发环境play.vuejs.org进行测试
|
2天前
|
Oracle Java 关系型数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
14 6
|
3天前
|
缓存 Java 数据库
Java并发编程学习11-任务执行演示
【5月更文挑战第4天】本篇将结合任务执行和 Executor 框架的基础知识,演示一些不同版本的任务执行Demo,并且每个版本都实现了不同程度的并发性。
24 4
Java并发编程学习11-任务执行演示
|
4天前
|
运维 安全 测试技术
测试基础 学习测试你必须要知道的基础知识
测试基础 学习测试你必须要知道的基础知识
9 3
|
4天前
|
数据库连接
java+ssm+vue代码视频学习讲解
java+ssm+vue代码视频学习讲解
6 0
|
6天前
|
前端开发 JavaScript Java
java测试链接超时返回前端
java测试链接超时返回前端
16 0
|
11天前
|
安全 IDE Java
Java串口通信技术探究2:RXTX库单例测试及应用
Java串口通信技术探究2:RXTX库单例测试及应用
28 4
|
13天前
|
Java 测试技术 Maven
Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]
Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]
|
14天前
|
算法 Java 大数据
Java从入门到精通学习报告
Java从入门到精通学习报告
20 1