小弟菜鸟,在练习JNDI时,报can't bind arbitrary objects in an FSContext错误,
不知如何解决,请高手指教!
代码如下:
import java.util.*;
import java.sql.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;public class MysqlJndiTest{
static final String LOGICNAME="jdbc/mysqldatasource";
public static void main(String[] args) {
Context ct=null;
Connection con=null;
Statement st=null;
ResultSet rs=null;
Properties p=new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.FSContextFactory");
p.put(Context.PROVIDER_URL, "File:\\D:\\temp");
try{
ct=new InitialContext(p);
bindContext(ct);
System.out.println("bind successful!");
}catch(NamingException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
public static void bindContext(Context ct) throws NamingException,SQLException{
MysqlDataSource mds=new MysqlDataSource();
mds.setUrl("jdbc:mysql://localhost/test");
mds.setUser("root");
mds.setPassword("");
ct.rebind(LOGICNAME , mds);
}
}
不知如何解决,请高手指教!
代码如下:
import java.util.*;
import java.sql.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;public class MysqlJndiTest{
static final String LOGICNAME="jdbc/mysqldatasource";
public static void main(String[] args) {
Context ct=null;
Connection con=null;
Statement st=null;
ResultSet rs=null;
Properties p=new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.FSContextFactory");
p.put(Context.PROVIDER_URL, "File:\\D:\\temp");
try{
ct=new InitialContext(p);
bindContext(ct);
System.out.println("bind successful!");
}catch(NamingException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
public static void bindContext(Context ct) throws NamingException,SQLException{
MysqlDataSource mds=new MysqlDataSource();
mds.setUrl("jdbc:mysql://localhost/test");
mds.setUser("root");
mds.setPassword("");
ct.rebind(LOGICNAME , mds);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货