我只想在开发的java应用中利用weblogic提供的数据源,不想用JDBC直接连接到数据库可以吗?其实我正是带着这样的疑问开始的,而到最后得到的答案是肯定的。 首先还是在Myeclipse中新建一个java过程,当然了先是创建一个生成连接的类Connect.java,这里给出我的代码:
package connection;
import java.sql.*;
import java.util.*;
import javax.naming.*;
public class Connect {
public Connection getConnect(){
Context ctx = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL,"t3://172.16.1.200:7002");
Connection conn = null;
try {
ctx = new InitialContext(ht);
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup ("JNDI_scott");
conn = ds.getConnection();
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
}这里说明的是:
import的包要齐全;
在哈希表中放置生成上下文实例的两个参数:Context.INITIAL_CONTEXT_FACTORY,Context.PROVIDER_URL;
对于weblogic而言,第一个值是已经定好的就是:"weblogic.jndi.WLInitialContextFactory",它实际上时weblogic.jar中的一个类;
对于URL而言,前面是协议,后面是IP地址,再后面就是对应域名的端口号,例如:"t3://172.16.1.200:7002";
我曾视图将t3改成http,但是行不通,好像这就是java和weblogic通信的协议吧,换成别的不好使;
通过哈希表生成一个上下文实例,然后从上下文中lookup JDNI,从而得到连接。
然后给出我的测试类,还是先给出我的代码:Test.java
package testdatasource;
import java.sql.*;
import connection.*;
public class Test {
public static void main(String args[]){
Connect conn=new Connect();
Connection connection=conn.getConnect();
try{
Statement stmt=connection.createStatement();
stmt.execute("select sysdate from dual");
ResultSet rs=stmt.getResultSet();
while(rs.next()){
System.out.println(rs.getString(1));
}
rs.close();
stmt.close();
connection.close();
}catch(Exception e){
e.printStackTrace();
}
}
}这个类里面技术含量的东西没有了。对了给出目录结构吧,从目录结构中看出来我把weblogic.jar包到build path中了,路径可以参考,这里只是我的路径。