joined_document
.pdfПример реализации
final public class ConnectionPool {
/* ... */ static {
Class.forName("com.mysql.jdbc.Driver");
}
/* ... */
}
Пример реализации
final public class ConnectionPool {
/* ... */ static {
try {
Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundException e) {
System.err.println("ERROR");
}
}
/* ... */
}
7
Пример реализации
final public class ConnectionPool {
/* ... */ static {
try {
Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundException e) {
System.exit(0);
}
}
/* ... */
}
Пример реализации
public void init() throws DataException { try {
Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundException e) {
throw new DataException(e);
}
}
8
Пример реализации
public void freeConnection(Connection c) {
try {
connections.put(c);
} catch(InterruptedException e) {
System.err.println("ERROR");
}
}
Недостатки реализации
Когда необходимо подключение, приходится явно обращаться к пулу
Необходимо знать интерфейс пула соединений для получения и возврата соединения
Хранение подключений и управление подключениями концентрируются в одном классе
9
Другие идеи реализации
Получать подключение из пула через известный интерфейс DriverManager-а
Необходимо знать интерфейс пула соединений для получения и возврата соединения
Хранение подключений и управление подключениями концентрируются в одном классе
Другие идеи реализации
Получать подключение из пула через известный интерфейс DriverManager-а
Декорировать соединение своим классом, метод close которого возвращает декорируемое подключение в пул
Хранение подключений и управление подключениями концентрируются в одном классе
10
Другие идеи реализации
Получать подключение из пула через известный интерфейс DriverManager-а
Декорировать соединение своим классом, метод close которого возвращает декорируемое подключение в пул
Хранилище подключений реализовать в виде собственного JDBC-драйвера
11
Журналирование
событий
Logger
public class Logger {
private BufferedWriter writer;
private Logger() { ... }
private static Logger logger =
new Logger();
1
Logger
synchronized private void write( Level level,
String message) {
writer.write(...);
}
Logger
public static void error(String msg) { logger.write(Level.ERROR, message);
}
public static void warning(String msg) { logger.write(Level.WARNING, message);
}
public static void info(String msg) { logger.write(Level.INFO, message);
}
public static void debug(String msg) { logger.write(Level.DEBUG, message);
}
2
Logger
private Level level = Level.ERROR;
synchronized public static void setLevel(Level level) {
logger.level = level;
}
}
3