03_Java通信_JNDI_demo2远程调用weblogic的数据源
程序员文章站
2022-05-09 15:52:57
...
在demo1中我们简单实现了一个通过JNDI来获得person这个对象,但是因为运行在同一个项目中,表现的形式不是那么强烈。
下面我们使用远程的web服务器上的数据源来测试一下。远程weblogic服务器上定义一个数据源。在本地通过JNDI获得这个数据源,并且查询远程数据源中的数据。
在操作之前先来创建先决条件:
1.查看本地IP,确保weblogic服务器和本地不在一起
2.登陆weblogic,定义数据源(具体定义步骤在此就不细讲,不会的可以在网上查一下)
以上是JNDI服务器的设置,简单说就是在weblogic上面创建数据源。
下面使用JNDI获得这个数据源。
6.在第一节JNDI概念中说过,Java只提供了JNDI的接口,具体的实现都是不同厂商提供。所以我们势必要导入weblogic的JNDI的实现。
如何生成weblogic JNDI的实现?
生成与JDK版本对应的weblogicjar,利用cmd 进入到weblogic_home 路径下进入到server/lib目录,然后运行 JDK 1.6 命令 " java -jar wljarbuilder.jar" , 会生成wlfullclient.jar :
我们还有操作数据,所以也要使用JDBC的实现,后台的数据库使用的是Oracle,所以在项目中还要导入数据库的驱动。
7.我们还是建立普通的Java项目,导入上面创建好的weblogic的jar包和数据库操作的jar包。
8.开发代码:
import java.rmi.registry.LocateRegistry; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; public class Test { public static void findPerson() throws Exception{ //配置JNDI工厂和JNDI的url System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); System.setProperty(Context.PROVIDER_URL, "t3://10.1.71.**:7001"); //初始化 InitialContext ctx = new InitialContext(); //获取datasoures DataSource ds = (DataSource) ctx.lookup("dataSourceDBaihis"); //授权 Connection conn = ds.getConnection("weblogic", "*****"); //登陆weblogic的用户名、密码 //正常操作数据 Statement stmt=conn.createStatement(); String sql="select riskcode,riskname from pd_lmrisk"; ResultSet rs=stmt.executeQuery(sql); while (rs.next()){ System.out.println("险种编码:"+rs.getString(1)+" 险种名称:"+rs.getString(2)); } } public static void main(String[] args) throws Exception { findPerson(); } }
PS:url和weblogic的用户名和密码请自行填写
9.运行结果:
10.请求示意图: