Как разрешить пользователю настраивать параметры подключения к базе данных в проекте servlets / jsp?

Я создаю простое веб-приложение на основе сервлетов / 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. Я вижу, что это определенно не лучшая практика.

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

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

вы можете опубликовать свой класс подключения к базе данных? Итак, мы можем увидеть, как вы получаете подробную информацию из dbConfig.txt.

Jonathan Laliberte 31.10.2018 14:11
0
1
43
2

Ответы 2

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

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

Другие вопросы по теме