JNDI的问题--既然已经绑定了,为何会找不到
以下的两个代码分别是用来绑定数据源和查找数据源的
运行绑定数据源的代码后再运行查找数据源的代码会提示:javax.naming.NameNotFoundException; remaining name '"jdbc/test"'
可是再次运行绑定数据源的代码来测试时,就会提示:javax.naming.NameAlreadyBoundException: jdbc/test
既然已经被绑定了为何会找不到呢
本程序的IDE是JBUILDER7,APPLICATION SERVER:WEBSPHERE
请各位帮忙看看~~谢谢
绑定数据源的代码:
import COM.ibm.db2.jdbc.DB2DataSource;
import java.util.Hashtable;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.spi.*;
import java.sql.*;
import javax.sql.DataSource;
public class UsingJdbc {
public UsingJdbc() {
}
public static void main(String argv[]){
String databaseName = "test";
String login = "db2amdin";
String password = "123456";
String description = "Testing DB2 DataSource";
String dsName = "jdbc/test";
try{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
Context cxt = new InitialContext(env);
DB2DataSource ds = new DB2DataSource();
ds.setDatabaseName(databaseName);
ds.setDescription(description);
//ds.setUser(login);
//ds.setPassword(password);
cxt.bind(dsName,ds);
cxt.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
查找数据源的代码:
import COM.ibm.db2.jdbc.DB2DataSource;
import java.util.Hashtable;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.spi.*;
import java.sql.*;
import javax.sql.DataSource;
public class UsingJdbc2 {
public UsingJdbc2() {
}
public static void main(String argv[]){
Connection con = null;
try {
String dsName = "jdbc/test";
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.FSContextFactory");
Context ctx = new InitialContext(env);
DataSource ds = (DataSource)ctx.lookup(dsName);
con = ds.getConnection("db2admin","123456");
}catch(SQLException ex){
while (ex != null) {
System.out.println("Message: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("ErrorCode: " + ex.getErrorCode());
ex = ex.getNextException();
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(con != null)
con.close();
}catch(SQLException ex){
System.out.println("\nERROR:----- SQLException -----\n");
System.out.println("Message: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("ErrorCode: " + ex.getErrorCode());
}
}
}
}