郁闷了一天,还是没有解决这个问题,请各位大虾帮忙!
我的一个名为 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)

解决方案 »

  1.   

    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.initialat db.DbControl.getDbConnection(DbControl.java:35)
    at db.DbControl.main(DbControl.java:120)可能是缺包吧
      

  2.   

     new InitialContext()的时候程序会找参数。
    您可以在classpath目录下面建个 jndi.properties 文件,根据您server的类型指定参数:

    java.naming.provider.url = xxx。。
    java.naming.factory.initial =xxx。。
      

  3.   

    感谢各位,我已经解决了!在JSP里用是可以实施的,而在一般的JAVA类中用连接池是不行的,因为TOMCAT不能支持在普通JAVA类使用服务器中的数据资源