Arhn - архитектура программирования

Нужно предложение о том, как работать с опросом соединения в java (jsp & servlet)

Я разрабатываю простой проект. В этом проекте я использую n страниц jsp и сервлетов для взаимодействия с базой данных. Как мне написать строку подключения. В настоящее время я написал строку подключения для каждой страницы jsp (я знал, что это не лучшая практика). Теперь мой вопрос: как мне управлять строкой подключения? Я должен писать только на одной общей странице, тогда я должен использовать это. Как я могу реализовать это?? Может ли кто-нибудь помочь мне в этом??


Ответы:


1

Вам необходимо создать источник данных JNDI в контейнере сервлетов. По умолчанию это уже источник данных с пулом соединений. Как это сделать, зависит от производителя/версии контейнера сервлетов. Итак, вот только пример, ориентированный на Tomcat:

Сначала создайте файл /META-INF/context.xml (для ясности, META-INF находится на том же уровне, что и WEB-INF веб-приложения) и заполните его следующим (при условии, что это база данных MySQL).

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource
        name="jdbc/mydatabase" type="javax.sql.DataSource"
        maxActive="100" maxIdle="30" maxWait="10000" 
        url="jdbc:mysql://localhost:3306/mydatabase"
        driverClassName="com.mysql.jdbc.Driver"
        username="java" password="pass"
    />
</Context>

Затем зарегистрируйте его в файле /WEB-INF/web.xml вашего веб-приложения.

<resource-env-ref>
    <resource-env-ref-name>jdbc/mydatabase</resource-env-ref-name>
    <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
</resource-env-ref>

Получите это следующим образом в своем классе менеджера БД / DAO.

try {
    this.dataSource = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/mydatabase");
} catch (NamingException e) {
    throw new RuntimeException("DataSource is missing in JNDI.", e);
}

Наконец, получите соединение с ним внутри метода DAO, где вы выполняете запрос.

connection = dataSource.getConnection();

Не забудьте close() положить его внутрь finally try, где вы его берете.

Смотрите также:

13.04.2011
  • я получаю сообщение об ошибке DataSource отсутствует в JNDI... В чем проблема?? Должен ли я помещать какие-либо файлы jar в общую библиотеку ?? 13.04.2011
  • Тогда вы не используете Tomcat, или поместили файлы/декларации не в то место, или вы не поняли пример. 13.04.2011
  • нет .. я использую только Tomcat .. Я только что создал сервлет с помощью eclipse IDE. В методе doGet я просто копирую и вставляю ваш код. И я следовал инструкциям в соответствии с вашим сообщением! 13.04.2011
  • Это исключение указывает на то, что источник данных не определен как ресурс JNDI (т. е. META-INF/context.xml является неправильным или отсутствует, или web.xml является неправильным) или что имя JNDI в коде Java неверно. Какую версию Tomcat вы используете? После какой версии сервлета объявлен файл web.xml? 13.04.2011
  • Прости. Проблема была на моей стороне. И вы правы, проблема в файле контекста. Теперь работает. Не могли бы вы сказать мне полностью, сколько способов подключения к базе данных? или дайте мне любую ссылку.. Спасибо за ваш ответ.. 13.04.2011
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..