郁闷了。。那可不可以不通过JNDI找连接池?

解决方案 »

  1.   

    Hashtable env = new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY,
                "com.mysql.jdbc.jdbc2.optional.MysqlDataSourceFactory");
        try {
          ctx = new InitialContext(env);//这句报错       .................    }
        catch (Exception e) {
          System.err.println("ERROR  " + e.getMessage());
        }
      }错误信息
     Cannot instantiate class: com.mysql.jdbc.jdbc2.optional.MysqlDataSourceFactory对于MYSQL  这个参数Context.INITIAL_CONTEXT_FACTORY应该用什么才对啊?
      

  2.   

    这个context跟数据库没有关系,是属于jndi技术范围的,他跟只跟你的java server有关系。
    你写“com.mysql.jdbc.jdbc2.optional.MysqlDataSourceFactory”肯定是不对的。
    一般在同一个服务器内部使用,是不需要制定context参数的
    例如
    http://www.fixdown.com/article/article/564.htm
      

  3.   

    谢谢先,但是如果我不指定参数,会报找不到INITIAL_FACTORY的错
      

  4.   

    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
    cxt = new InitialContext();
    ds = (DataSource) cxt.lookup("java:comp/env/"+SysConfig.getJNDI());像这样会出以上问题
      

  5.   

    org.apache.commons.dbcp.BasicDataSource
    谁知道含有这个类的包在哪有下载的啊?
      

  6.   

    我是连MYSQL数据库,大家知道cxt里需要什么吗?
    或者提供下MYSQL的连接池方法,因为是自己写的SERVER,所以不能像主流的J2EE应用服务器一样配置,谢谢
    ---------------------------------------既然是你自己写的server,ctx里就应该是你的server要求的东西。
      

  7.   

    终于有人说话了,
    我还是Cannot instantiate class: org.apache.commons.dbcp.BasicDataSourceFactory
    我都取不到实例,
    还是自己写个POOL不用DATASOURCE了
      

  8.   

    给你个hsqldb的连接池写法,mysql应该也有自己实现了datasource的类public class Database{
      private DataSource ds;
      public Database(){
        org.hsql.jdbc.jdbcDataSource jds = new org.hsql.jdbc.jdbcDataSource();
        jds.setDatabase("jdbc:hsqldb:.");
        jds.setUser("sa");
        jds.setPassword("");
        ds = jds;
      }
      public boolean execute(String sql) throws Exception{
        Connection conn = ds.getConnection();
        Statement stmt = conn.createStatement();
        Boolean re = stmt.execute(sql);
        stmt.close();
        conn.close();
        return re;    
      }
    }
      

  9.   

    或者用org.apache.commons.dbcp.BasicDataSource这个在www.apache.org有下载,找common里的dbcp下载
      

  10.   

    Cannot instantiate class: com.sun.jndi.fscontext.RefFSContextFactory
    我都要报类似的错误,是什么原因呢?org.apache.commons.dbcp这个包我也有下载,但是错误和上面的类似
    问下大家知道这个是什么原因不?
      

  11.   

    找到驱动看了下,是com.mysql.jdbc.jdbc2.optional.MysqlDataSource类应该是用setUrl(),setUser(),setPassword()这三个方法就可以了,
      

  12.   

    com.mysql.jdbc.jdbc2.optional.MysqlDataSource
    这个我也下载了,但是还是有问题,
      

  13.   

    测试过了,没有问题!public class Database {
    private static Database instance = new Database(); private DataSource ds; public Database() {
    com.mysql.jdbc.jdbc2.optional.MysqlDataSource mds = new com.mysql.jdbc.jdbc2.optional.MysqlDataSource();
    mds.setUrl("jdbc:mysql://localhost/eighthart");
    mds.setUser("root");
    mds.setPassword("");
    ds = mds;
    } public boolean execute(String sql) throws Exception {
    Connection conn = ds.getConnection();
    Statement stmt = conn.createStatement();
    boolean re = stmt.execute(sql);
    stmt.close();
    conn.close(); return re;
    } public static void main(String[] args) { Database db = Database.getInstance();
    try {
    db.execute("insert into users(id,name,password,posttime) values(3,'dreamover','werwwe','2006-05-06')");
    } catch (Exception e) {
    e.printStackTrace();
    } } private static Database getInstance() { return instance;
    }
    }
      

  14.   

    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.fscontext.RefFSContextFactory");Context ctx = new InitialContext(env);//是在这句话出错的的。错误  : Cannot instantiate class: com.sun.jndi.fscontext.RefFSContextFactory
      

  15.   

    是否你用的服务器没有mysql的DataSource实现?还是的的mysql驱动版本的问题