Использование динамического источника данных с Tomcat - дополнительные вопросы - PullRequest
2 голосов
/ 20 августа 2011

Я работаю над проектом, в котором дизайн должен иметь базу данных для каждого клиента.Мне удалось прочитать в Tomcat документацию и установить пул соединений.Поскольку базы данных создаются приложением автоматически при регистрации клиента, мне нужен был способ создания динамического пула.следующий пост о переполнении стека дал подсказку о том, что требуется:

Использование динамического источника данных с Tomcat

, и я нашел в Интернете страницу, показывающую, как это сделать:

Написание и использование Tomcat ObjectFactory

У меня все еще есть несколько вопросов:

1 - кто отвечает за управление соединениями в пуле?в объявлении источника данных в context.xml мы определяем некоторые параметры, которые управляют различными аспектами, такими как максимальное время простоя и максимальное количество соединений, и т. д. Обрабатывает ли это tomcat или я должен заботиться об этом в реализации, которую я выполняю при кодированиикласс, который реализует интерфейс ObjectFactory?

2 - Как я понимаю, когда соединения закрыты, они возвращаются в пул.Предположим, что я делаю динамический пул, который имеет максимум 20 соединений.и затем 30 клиентов входят в систему. Таким образом, пул возвращает 20 соединений для первых 20 клиентов.когда эти соединения закрыты, они возвращаются в пул, и следующие 10 клиентов будут запрашивать соединения с базами данных, отличными от уже найденных в пуле.и вопрос: пул автоматически отбросит 10 соединений и добавит новые с правильными базами данных?если это так, имеет ли это преимущество перед открытием соединения по запросу без пула?(спросил с мыслью о сайте, который будет сильно загружен. Количество разрыва соединения, если я правильно угадал, может быть очень высоким, что не оправдывает то, что пул должен делать: минимизировать создание соединений с нуля)

3- Я также хотел спросить, нормально ли это реализовать самостоятельно (учитывая, что я новичок в этом) или мне следует найти библиотеку, которая делает это (в случае, если это не является задачей для новичка в этой области).

4 - есть ли альтернативы для пулов соединений для управления соединениями с несколькими базами данных, которые добавляются динамически и эффективно?(в случае, если источник данных не поможет), какие подходы используются в подобных ситуациях?

Заранее благодарим вас за ваши усилия.

1 Ответ

0 голосов
/ 20 августа 2011

При объявлении источника данных вы можете указать класс источника данных, например, источник данных Oracle. Он использует параметры, указанные для управления источником данных для вас. Лучше всего позволить источнику данных управлять собой. Я пытался написать один, и это не просто.

Я думаю, что источник данных не будет достаточным для вас, я могу ошибаться. Для источника данных требуются URL базы данных, имя пользователя и пароль, которые будут исправлены на весь срок жизни источника данных.

Наличие разных баз данных для разных пользователей сломает это.

Посмотрите на ссылку, которую вы дали выше, в ответе упоминается ресурс, который отличается от источника данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...