Нужно предложение о том, как работать с опросом соединения в Java (JSP и сервлет) - PullRequest
0 голосов
/ 13 апреля 2011

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

1 Ответ

2 голосов
/ 13 апреля 2011

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

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

<?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, где вы его получаете.

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

...