Мы создаем приложение 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/