Weblogic之weblogic数据源配置及jndi调用
将数据源交给容器管理,使用jndi的方式管理,可以很方便的管理数据库连接。
将数据管理库交给容器,后面工程直接使用jndi的方式在容器中获取jndi地址。
如果变更数据库地址,直接修改数据库连接池的地址即可,而各工程无需再一个个的修改数据库连接地址,简化了数据库的管理。
今天我们看看WebLogic中数据源的配置
启动WebLogic服务,进入WebLogic控制台
点击左侧的 服务 -> 数据源
新建 一般数据源
填写数据源名称和 jndi名称,选择数据库类型
选择数据库驱动
默认下一步即可
填写数据库名称,主机名,端口号,数据库用户名和口令
点击测试配置,待消息区显示连接测试成功时,点击完成
接下来我们在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)
异常产生。
仔细检查会发现,我们的数据源定义好了,但是没有指定它的服务目标
现在我们将数据源绑定到它的目标server上面去
点击数据源jdbcTest,进入到数据源详细信息页面
点击上面的目标Tab页签,展示目标页内容
勾选AdminServer前面的勾,点击保存,设置jdbcTest数据源为AdminServer服务。
待消息区出现,已**所有更改,不需要重新启动,设置更新成功。 数据源设置成功。
重新在工程中获取数据库连接池,可成功获取。