郁闷了一天,还是没有解决这个问题,请各位大虾帮忙!
我的一个名为 DbControl 的 JAVA类文件的使用连接池源码如下:public void getDbConnection() throws ClassNotFoundException,SQLException{
try{
[size=16px] Context context = new InitialContext();
dataSource = (DataSource) context.lookup("java:/comp/env/jdbc/sqlserver");[/size] con = dataSource.getConnection();
stat= con.createStatement();
System.out.println("connectin succesful");
}catch (Exception e) {
e.printStackTrace();
System.out.println("获取数据源出错!!");
}
// Class.forName(Driver);
//
// con=DriverManager.getConnection(URL,Username,Password);
}然后在MAIN方法里面测试连接:public static void main(String[] args) {
// TODO Auto-generated method stub
DbControl c = new DbControl();
// String sql = "Insert into[User]([username],[password],[realname],[company],[department],[position],[qq],[msn],[email],[telephone])Values(0,0,0,0,0,0,0,0,0,0)";
//
try {
c.getDbConnection();
// String info = c.DoInsert(sql);
// System.out.println(info);
} catch (ClassNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
} catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
}
// c.close();
//
}结果抛出如下异常:javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at db.DbControl.getDbConnection(DbControl.java:35)
at db.DbControl.main(DbControl.java:120)
我的一个名为 DbControl 的 JAVA类文件的使用连接池源码如下:public void getDbConnection() throws ClassNotFoundException,SQLException{
try{
[size=16px] Context context = new InitialContext();
dataSource = (DataSource) context.lookup("java:/comp/env/jdbc/sqlserver");[/size] con = dataSource.getConnection();
stat= con.createStatement();
System.out.println("connectin succesful");
}catch (Exception e) {
e.printStackTrace();
System.out.println("获取数据源出错!!");
}
// Class.forName(Driver);
//
// con=DriverManager.getConnection(URL,Username,Password);
}然后在MAIN方法里面测试连接:public static void main(String[] args) {
// TODO Auto-generated method stub
DbControl c = new DbControl();
// String sql = "Insert into[User]([username],[password],[realname],[company],[department],[position],[qq],[msn],[email],[telephone])Values(0,0,0,0,0,0,0,0,0,0)";
//
try {
c.getDbConnection();
// String info = c.DoInsert(sql);
// System.out.println(info);
} catch (ClassNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
} catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
}
// c.close();
//
}结果抛出如下异常:javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at db.DbControl.getDbConnection(DbControl.java:35)
at db.DbControl.main(DbControl.java:120)
at db.DbControl.main(DbControl.java:120)可能是缺包吧
您可以在classpath目录下面建个 jndi.properties 文件,根据您server的类型指定参数:
java.naming.provider.url = xxx。。
java.naming.factory.initial =xxx。。