Implement Connection Pool JDBC

  • Em đang implement Conntion Pool với InitialContext và DataSource.
  • Lúc đầu em làm như trong sách:

image

  • Nhưng sau đó thì gặp lỗi như sau: 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

  • Sau khi lân la trên mạng thì em tìm được 1 cách là tạo Properties object sau đó set field của INITIAL_CONTEXT_FACTORY:

  • Nhưng em không biết nên set cái field nó như thế nào, đọc thấy người ta nói là set theo ClassPath, nhưng em vẫn chưa hiểu lắm, thử một số cách trên mạng thì đều dính lỗi : Cannot instantiate class … [Root exception… ]

  • Code full cho class ConnectionPool đây ạ:

package verinike_database;

import java.sql.*;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class ConnectionPool {

    private static ConnectionPool pool = null;
    private static DataSource dataSource = null;

    private ConnectionPool() {
        try {
            Properties props = new Properties();
            props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "Em dang bi cho nay");
            InitialContext ic = new InitialContext(props);
            dataSource = (DataSource) ic.lookup("java:/comp/env/jdbc/murach");
        } catch (NamingException e) {
            System.out.println(e);
        }
    }

    public static synchronized ConnectionPool getInstance() {
        if (pool == null) {
            pool = new ConnectionPool();
        }
        return pool;
    }

    public Connection getConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            System.out.println(e);
            return null;
        }
    }

    public void freeConnection(Connection c) {
        try {
            c.close();
        } catch (SQLException e) {
            System.out.println(e);
        }
    }
}
  • Em trình bày hơi lủng củng mong mọi người thông cảm, em cảm ơn ạ!!

merged to the #1 post by noname00

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?