本帖最后由 lc1cs 于 2013-06-26 21:16:27 编辑

解决方案 »

  1.   

    用jdni获取数据库连接失败啦,我看到这里不对。
            Context initCtx = new javax.naming.InitialContext();// 初始化Context对象
                Context envCtx = (Context) initCtx.lookup("java:comp/env"); // 获得数据源
                DataSource ds = (DataSource) envCtx.lookup("jdbc/DbPool");
       换成这样子,你再看看。
            Context initCtx == new javax.naming.InitialContext();
         DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/DBPool");
      

  2.   

    // Context initCtx = new javax.naming.InitialContext();// 初始化Context对象
    // Context envCtx = (Context) initCtx.lookup("java:comp/env"); // 获得数据源
    // DataSource ds = (DataSource) envCtx.lookup("jdbc/DbPool");
    Context initCtx = new javax.naming.InitialContext();
        DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/DbPool");还是出现结果那种情况,不过感谢你的关注。
      

  3.   

    如果你贴出来的代码行标没错误的话:
    java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        ......
        at com.test.tool.DbPool.createConn(DbPool.java:20) // 第20行是这行:
    conn = ds.getConnection();// 获得数据库连接
    意味着之前的JNDI操作应该是没问题的。
    主要问题就是连接3306端口失败。CMD命令行下,完整输入:
        telnet  localhost  3306
    有反应么?
      

  4.   


    不用连接池,这个类中,修改为直接JDBC连接试试看,先排除Java自身环境因素。
      

  5.   

    public class DbPool {
    private Connection conn;
    private final String url = "jdbc:mysql://localhost:3306/db_status?characterEncoding=GB2312";
        private final String userName = "root";
        private final String password = "root"; public void createConn() {
    try {
    // Context initCtx = new javax.naming.InitialContext();// 初始化Context对象
    // Context envCtx = (Context) initCtx.lookup("java:comp/env"); // 获得数据源
    // DataSource ds = (DataSource) envCtx.lookup("jdbc/DbPool");
    // Context initCtx = new javax.naming.InitialContext();
    //     DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/DbPool");
    // conn = ds.getConnection();// 获得数据库连接
    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    conn = DriverManager.getConnection(url,userName,password);
    System.out.println("数据库连接成功!");
    } catch (Exception e) {
    System.out.println("数据库连接失败!");
    e.printStackTrace();
    }
    }
    ...
    按楼上说的那样就可以了,但没用上连接池。