获取WEBLOGIC控制台配置的JNDI数据源,并创建Connection

来源:互联网 发布:塞班系统安装软件 编辑:程序博客网 时间:2024/06/06 09:05
 
package Beans;import java.util.Map;import java.util.HashMap;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.sql.DataSource;public class ServiceLocator{    private javax.naming.Context ic;    private String dsName ="myjndi";    private Map cache = new HashMap();    private static ServiceLocator me;    /**     *       */    private ServiceLocator()    {        try        {            this.ic = new InitialContext();                    }        catch (NamingException e)        {            System.out.println("** ServiceLocator.ServiceLocator() 无法初始化InitialContext");        }    }    //返回实例    public static ServiceLocator getInstance()    {        if (null == me)            me = new ServiceLocator();        return me;    }    public DataSource getDataSource(String dataSourceName)    {        DataSource dataSource = null;                try        {            if (cache.containsKey(dataSourceName))            {                dataSource = (DataSource)cache.get(dataSourceName);            }            else            {            //Context envCtx=(Context)ic.lookup("java:comp/env");                dataSource = (DataSource)ic.lookup(this.dsName);                cache.put(this.dsName, dataSource);            }        }        catch (NamingException e)        {            System.out.println("==========没有找到服务名称" + dataSourceName + "==========");;        }        return dataSource;    }        public DataSource getDataSource()    {        DataSource dataSource = null;                try        {            if (cache.containsKey(this.dsName))            {                dataSource = (DataSource)cache.get(this.dsName);            }            else            {                                           dataSource = (DataSource)ic.lookup(this.dsName);                cache.put(this.dsName, dataSource);            }        }        catch (NamingException e)        {            System.out.println("==========没有找到服务名称" + this.dsName + "==========");;        }        return dataSource;    }}


“myjndi”是WEBLOGIC上配置的数据源的JNDI NAME,

这里要注意的是查看你的DATA SOURCE是否成功发布,修改了JNDI NAME啊或者其他的参数后数据源的DEVELOP会置为FALSE。这时候最好是删除重新创建重新发布一下。我今天在用JNDI数据源的时候弄了几个小时老是不能成功取到数据源,还以为是我取数据源的方式有问题还是JNDI名字有问题,后面对比另外一台电脑上的WEBLOGIC才发现原来是DEVELOP为FALSE了,于是重新创建了一下,果然成功了,真是坑爹啊。4个小时就这么浪费了,不过走过的弯路是以后的财富。

原创粉丝点击