WebLogic中配置JNDI方法小结

将数据源交给容器管理,使用JNDI的方式管理,可以很方便的管理数据库连接,后面在工程中直接使用JNDI的方式在容器中获取JNDI地址。如果变更了数据库地址,直接修改数据库连接池的地址即可,而各工程无需再一个个的修改数据库连接地址,简化了数据库的管理。

下面是WebLogic中配置JNDI数据源的方法,tomcat中配置JNDI数据源的方法可参见《Tomcat中配置JNDI数据源的三种方式小结》:

首先启动weblogic,进入weblogic控制台,点击控制台左侧的服务 -> 数据源,然后新建一般数据源

新建一般数据源

图1:新建一般数据源

新建JDBC数据源,填写数据源名称和JNDI名称,选择数据库类型。

填写数据源信息

图2:填写数据源信息

选择相应的数据库驱动,如下图3:

选择数据库驱动

图3:选择数据库驱动

选择完数据库驱动以后,事务处理选项直接默认即可,然后在连接属性中填写数据库名称、主机名、端口号、数据库用户名和口令。然后,点击测试配置,待消息区显示连接测试成功时,点击完成,如下图4所示:

测试连接成功

图4:测试连接成功

接下来在web工程中调用weblogic容器中的JNDI数据源:

在工程中web.xml中配置:

<resource-ref>    
     <description>DB Connection</description>  
     <res-ref-name>jdbc/test</res-ref-name>    
     <res-type>javax.sql.DataSource</res-type>    
     <res-auth>Container</res-auth>    
</resource-ref>

接下来在工程代码中调用:

Hashtable<String, String> env = new Hashtable<String, String>();  
    env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");  
    env.put(Context.PROVIDER_URL,"t3://localhost:7001");  
    
    // 初始化查找命名空间
Context ctx = new InitialContext(env);
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test");
// 获取数据库连接
Connection conn = ds.getConnection();

运行下,这时会发现报错了,报错信息如下:

javax.naming.LinkException:  [Root exception is javax.naming.NameNotFoundException: 
While trying to lookup 'jdbc.test' didn't find subcontext 'jdbc'. Resolved ''; remaining name 'jdbc/test']; 
Link Remaining Name: 'jdbc/test' at weblogic.jndi.internal.WLNamingManager.getObjectInstance(WLNamingManager.java:100)

出现上面错误的原因是虽然定义好了数据源JNDI,但是没有为它指定服务目标,需要做下面的配置,点击数据源jdbcTest,进入目标选项下,选中要服务的服务器,如下图5所示:

设置服务器

图5:设置服务器

然后激活所有更改,再次运行就会发现无误。

当然,如果web项目中使用了spring框架,那么调用数据源JNDI就会更容易,只需要在applicationContext.xml中做一下配置即可,博客后面的文章会有介绍。

参考资料:

本文标题:WebLogic中配置JNDI方法小结

本文链接:http://yedward.net/?id=362

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章