Как разрешить пользователю настраивать параметры подключения к базе данных в проекте Servlets / JSP? - PullRequest
0 голосов
/ 31 октября 2018

Я создаю простое веб-приложение на основе Servlets / JSP, которое подключается к базе данных MySQL. Ранее я создал класс ConnectionParams и класс DBConnection. ConnectionParams класс содержит жестко запрограммированный хост БД, имя пользователя и пароль. DBConnection создает на его основе соединение JDBC, которое затем используется для операций с базой данных.

public class DBConnector extends HttpServlet {
    Connection conn;
    static DBConnectionProperties dbProps;

    public DBConnector() {
        try {
            BufferedReader br = new BufferedReader(new FileReader(System.getProperty("java.io.tmpdir")+"\\zlmondbcon.txt"));
            String line = br.readLine();
            dbProps = new DBConnectionProperties(line);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public Connection getConnection() {
        return conn;
    }

    public Connection connect() throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        conn = DriverManager.getConnection(dbProps.getConnectionString(), dbProps.getUser(), dbProps.getPass());
        return conn;
    }

    ...
    ...

Я понял проблему при развертывании ее в тестовой среде, в которой есть отдельная БД, и администратор БД может изменить имя пользователя / пароль и т. Д. Поэтому я создал отдельный текстовый файл с такими подробностями, как WEB-INF \ dbConfig.txt . Это содержит информацию как:

dbName=mydbschema
dbUser=myuser
dbPass=mypass
dbType=mysql

Пользователь должен редактировать файл в <TOMCAT HOME>\Webapps\myproject\WEB-INF при каждом перезапуске сервера. Каждый раз, когда запускается основной сервлет, он читает файл и сохраняет глобальный объект ConnectionParams. Я вижу, что это определенно не лучшая практика.

Я ищу более надежное решение для того же.

Пожалуйста, измените вопрос, если считаете, что он не сформулирован должным образом. Добавьте комментарии, если я должен добавить больше деталей.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Я рекомендую использовать пул соединений и подготовить соединение для каждой используемой БД. Затем позвольте пользователю выбрать желаемое соединение. При этом вам все равно нужно будет делать некоторые ручные записи, когда имя пользователя или пароль изменяются или создается дополнительная БД, но соединения обрабатываются контейнером. При обработке соединений с помощью веб-приложения вы должны уделять много внимания закрытию соединений, чтобы не было незанятых соединений с БД.

0 голосов
/ 31 октября 2018

Один из вариантов - извлечь файл конфигурации из файла war и правильно указать путь и имя файла через систему. Это упростит задачу редактирования и обслуживания конфигурации.

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