2015-09-09 7 views
0

Как обрабатывать динамическую базу данных для построителя форм. Каким образом мне нужно настроить имя источника базы данных в «context.xml» из tomcat и «Orbeon forms», хранятся в одиночном статическом db или «orbeon».Как настроить динамическую базу данных для формообразователя

В настоящее время я использую следующий контекст в контексте context.xml и он получает доступ к статической базе данных, а затем создает/обновляет/удаляет формы.

<Resource name="jdbc/postgres" auth="Container" type="javax.sql.DataSource" 
initialSize="3" maxActive="10" maxIdle="20" maxWait="30000" 
driverClassName="org.postgresql.Driver" 
poolPreparedStatements="true" 
validationQuery="select 1 " 
testOnBorrow="true" 
username="orbeon" 
password="orbeon" 
url="jdbc:postgresql://localhost:3306/orbeon?useUnicode=true&amp;characterEncoding=UTF8"/> 

Здесь «orbeon» - это статическая БД.

Вместо статической БД мне нужно предоставить динамическую БД. Прежде чем пользователь откроет формуляр «URL« Я дал страницу входа в систему. Если аутентификация является успешной, тогда на основе пользователя-пользователя пользователь может получить доступ к формам только своей БД.

ответ

0

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

В Postgres, вероятно, лучше иметь несколько схем в базе данных - одна схема для каждого пользователя.

Тогда после того, как вы получите соединение из пула соединений, вы можете изменить схему по умолчанию для сеанса с помощью:

set search_path = user_specific_schema; 

Не забудьте совершить эти изменения, в противном случае первый откат на сессии будет верните это. Вы можете это сделать, запустив этот оператор с автоматической фиксацией или вызовите commit() на свой Connection объект.

Возможно, это произойдет автоматически, используя interceptor для вашего пула соединений.

+0

Благодарим вас за ответ, но я до сих пор не понял, как изменить схему динамически на основе разных пользователей. Можете ли вы охарактеризовать это немного больше.thanx заранее. – Prathyush

+0

@Prathyush. Вы меняете схему, используя оператор SQL в своем ответе. Нет ничего больше. –

+0

Не могли бы вы рассказать мне, где мне нужно выполнить схему в исходном коде компоновщика формы orbeon. – Prathyush