Мечты о мечтах, самостоятельно реализованный источник данных и пул соединений для Java, полное название — mgang datasource for java##2015-04-23
##2014-12-01
##2014-11-28
Обновление до версии v1.1:
Обновление до версии v2.0:
Учитывая понятия источника данных и пула соединений, источник данных представляет собой объект-инструмент, использующий технологию пула соединений для кэширования соединений с базой данных для внешнего использования.
Поэтому файлы MgDataSource.java и MgConnectionPool.java были объединены в один файл MgDataSource.java.
Тестирование прошло успешно.
Обновление до версии v2.1:
Конфигурационные файлы properties заменены на xml.
Добавлена реализация через шаблоны проектирования: фабрика, одиночка и рефлексия.
Одиночка:
private static MgDataSource mgds = null; private MgDataSource() { // Приватный конструктор }
/**
// Создание фабрики
MgDataSourceFactory.build();
// Получение источника данных из фабрики
ds = MgDataSourceFactory.getMgDataSource("ds");
Рефлексия:
// Вызов статического метода getInstance для получения единственного экземпляра
Class dsClass = Class.forName(clazz);
ds = (MgDataSource) dsClass.getMethod("getInstance", new Class[0]).invoke(null, new Object[0]);
factory.put(name, ds);
// Получение узлов property из dataSource
Iterator ps = dsElement.elementIterator("property");
while (ps.hasNext()) {
Element propertyElement = (Element) ps.next();
String key = propertyElement.attributeValue("key");
String value = propertyElement.attributeValue("value");
String type = propertyElement.attributeValue("type");
if (type.equals("string")) {
Method m = MgDataSource.class.getMethod("set" + UpperFirst(key), String.class);
m.invoke(ds, value);
} else if (type.equals("int")) {
Method m = MgDataSource.class.getMethod("set" + UpperFirst(key), int.class);
m.invoke(ds, Integer.parseInt(value.trim()));
}
}
Сегодня я планировал решить проблему передачи параметров Struts2, которая иногда приводит к значению null, но вместо этого столкнулся с проблемами, связанными с временем отклика в 45 секунд и отказом подключения к базе данных.
Затем, борясь с этими проблемами, я занялся этим вопросом. К счастью, были достигнуты некоторые успехи.
Проблема со временем 45 секунд была решена онлайн, но я всё равно собираюсь написать об этом на своём блоге NetEase.
Второй проблемой стало соединение с базой данных. После изучения некоторых материалов выяснилось, что это может быть связано с источником данных, после чего я начал работать над источниками данных и пула соединений.Успешно использовался обычный источник данных dbcp и c3p0.
Затем я решил попробовать создать свой собственный источник данных, используя технологию пула соединений. Конечно, возможно, мне не удастся сделать его таким же удобным, как dbcp и c3p0, но я всё равно намерен реализовать это самому. Даже если в будущем я буду использовать профессиональные источники данных, этот опыт будет значительным шагом вперёд.
Таким образом, проект mgds4j родился.
Сегодня можно считать завершённой версией 1.0.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )