Как лучше всего использовать динамическое имя пользователя и пароль JDBC?

Мы создаем приложение XPages с серверной частью MySQL. Приложение будет использоваться несколькими клиентами. У каждого есть собственная база данных NSF и соответствующая база данных MySQL. У каждого клиента будет собственное имя пользователя MySQL. Мы используем компоненты JDBC библиотеки расширений (ConnectionManager).

Мы планировали хранить имя пользователя и пароль в файле NotesDocument. Таким образом, дизайн NSF можно легко обновить из шаблона NTF, не затрагивая эти данные. Однако компонент ConnectionManager и функция @GetJdbcConnection SSJS считывают имя пользователя, пароль и другую информацию о подключении из файла, хранящегося в папке WEB-INF/jdbc. Файлы, хранящиеся там, будут перезаписаны при обновлении дизайна NSF, что приведет к потере информации, специфичной для клиента.

Кажется, нет никакого способа сделать эти файлы динамическими (WEB-INF по спецификации доступен только для чтения) или включить в них динамические элементы (см. -jdbc-connection-files-contain-computed-properties">предыдущий вопрос).

Мы могли бы использовать динамический URL-адрес JDBC в ConnectionManager, однако книга ExtLib предостерегает от такой практики. Кажется, что тогда мы теряем пул соединений. Кроме того, функция @GetJdbcConnection не принимает URL-адреса JDBC.

Итак, как лучше всего хранить информацию о соединении JDBC, специфичную для NSF?

РЕДАКТИРОВАТЬ: РЕШЕНО

Я создал подкласс компонента jdbcConnectionManager. Процедура подробно описана здесь: http://lazynotesguy.net/blog/2013/08/09/subclassing-an-extlib-component/


person Lauri Laanti    schedule 19.07.2013    source источник
comment
Вы добились прогресса?   -  person stwissel    schedule 22.07.2013


Ответы (1)


Лучше всего разделить классы Extlib на подклассы. Поскольку исходный код extlib предоставляется, это не должно быть слишком сложно. Другой вариант — использовать систему контроля версий для поддержки веток для каждого клиента, которые отличаются только этим файлом конфигурации.

person stwissel    schedule 19.07.2013
comment
@Lauri: загляните в NSFFileJdbcProvider.java - person Frantisek Kossuth; 19.07.2013
comment
@Frantisek: этот файл выглядит многообещающе. Если я создам свой собственный подкласс, как я могу его использовать? Класс JdbcDataSourceProvider ссылается на NSFFileJDBCProviderнепосредственно. Он содержит только геттер для localProvider. Должен ли я создавать свою собственную версию всего пакета exlibx? - person Lauri Laanti; 26.07.2013
comment
@stwissel: Вы предлагаете создать подкласс компонента JDBCConnectionManager? - person Lauri Laanti; 26.07.2013
comment
В итоге я создал подкласс компонента JdbcConnectionManager. - person Lauri Laanti; 09.08.2013