|
|
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
Использую JDeveloper 11g R2, коннект к Oracle Есть необходимость работы на 2 схемы, т.е. 2 одинаковый инстанса с разными именами, одна используется для разработки, вторая рабочая. В приложении на стрнице логина необходимо указывать схему и далее работать с указанной схемой. Нашла вот такой замечательный пример: http://andrejusb.blogspot.com/2012/08/sample-application-for-switching.html НО... так НЕ работает, т.е. приложение видит схему, к которой я хочу подключиться, устанавливает ее енвиронменту, при вызове хранимых процедур правильно считывает имя подключения, НО отображает данные схемы по умолчанию. Т.е. я так понимаю, не уставливает этот коннект АМу. Где я вижу проблему... в их примере есть такой класс: CustomADFBCDataControl, который я так и не нашла где и куда подключается, т.е. он нигде не вызывается. Может проблема в другом месте, если у кого-нить будут соображения, ткните плиз носом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2012, 19:28:35 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
Привет я для этих целей применяю макроимена. И обязательно динпмическое создание. У Меня запрос типа String sql=select * from &shema.table where .... sql=replace_shema("&shema","owner") ViewObjectImpl vo=(ViewObjectImpl)application.createViewObjectFromQueryStmt(sqlname, sql); Если будет именятся запрос в будующем обязательно vo.setFullSqlMode(ViewObjectImpl.FULLSQL_MODE_AUGMENTATION); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2012, 21:11:16 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
irbis_al, динамическое создание это, конечно, вариант, но и так же должно работать... у других людей то работает как-то ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 12:07:16 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palun, Для подобной ситуации я использовал собственный EnvInfoProvider, в котором заменял свойство "Configuration.JDBC_DS_NAME", беря его из сессионной или bean-переменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 16:53:13 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
P.S. Собственно, в статье Andrejus Baranovskis про это и пишет. Под дебаггером в нужный участок кода попадаете? В bc4j.xcfg для нужной конфигурации свой EnvInfoProvider прописали? В databindings.cpx эта конфигурация указана? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 16:58:10 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunИспользую JDeveloper 11g R2, коннект к Oracle , НО отображает данные схемы по умолчанию. Т.е. я так понимаю, не уставливает этот коннект АМу. Где я вижу проблему... в их примере есть такой класс: CustomADFBCDataControl, который я так и не нашла где и куда подключается, т.е. он нигде не вызывается. Может проблема в другом месте, если у кого-нить будут соображения, ткните плиз носом :) А Попробуйте сделать resetview Типа resetview(vo) { vo.reset(); vo.resetExecuted(); vo.resetSelectedAttributeDefs(); vo.clearCache(); vo.setWhereClause(null); vo.setWhereClauseParams(null); vo.getVariableManager().clearVariables(); vo.executeEmptyRowset; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 17:14:38 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX777Под дебаггером в нужный участок кода попадаете? да. В том то мне и непонятка, что в EnvInfoProvider он попадает, JDBC_DS_NAME устанавливает, но получается что он его не использует. И я удалила коннект к той схеме, к кторой хочу подключиться и он не ругнулся, т.е. получается, что он даже не пытается использовать указанный DataSource MOHAX777В bc4j.xcfg для нужной конфигурации свой EnvInfoProvider прописали? да MOHAX777В databindings.cpx эта конфигурация указана? неее уверена, нужный DataControl подключен, еще что-то нужно подключить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 20:08:07 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
А Попробуйте сделать resetview Типа resetview(vo) { vo.reset(); vo.resetExecuted(); vo.resetSelectedAttributeDefs(); vo.clearCache(); vo.setWhereClause(null); vo.setWhereClauseParams(null); vo.getVariableManager().clearVariables(); vo.executeEmptyRowset; }[/quot] Где это лучше сделать? В %VO%Impl? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 20:09:36 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunА Попробуйте сделать resetview Типа resetview(vo) { vo.reset(); vo.resetExecuted(); vo.resetSelectedAttributeDefs(); vo.clearCache(); vo.setWhereClause(null); vo.setWhereClauseParams(null); vo.getVariableManager().clearVariables(); vo.executeEmptyRowset; } Где это лучше сделать? В %VO%Impl? Ну в свой код...Вам же лучше знать...или у вас сам исходный пример что по ссылке не работает...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 20:21:10 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
irbis_alНу в свой код...Вам же лучше знать...или у вас сам исходный пример что по ссылке не работает...? Не ну в ADF все коды, в принципе, похожи, структура проектов то одна..... Я спрашиваю где это вызвать, чтобы точно сработало, вот например: если я вызову в классе логина, то там еще рано, установка схемы еще не произошла, при отображении мейна уже поздно, где-то ж нужен листенер "в том самом" месте :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 21:13:56 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana Palun, М...Ну reset нужно вызвать перед vo.executeQuery... Некоторая проблема в том,что ADF глубоко интегрирована и сама вызывает этот метод...для этого надо управляющим бином отслеживать(или другим доступным способом)...и тут только Вы знаете логику приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 21:35:59 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunMOHAX777В databindings.cpx эта конфигурация указана? неее уверена, нужный DataControl подключен, еще что-то нужно подключить? у AM может же несколько конфигураций быть, в databindings.cpx в разделе dataControlUsages для каждого AM указывается, какая конфигурация используется. У вас указана конфигурация, в которой используется кастомный EnvInfoProvider? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2012, 10:17:37 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX777Oksana Palunпропущено... неее уверена, нужный DataControl подключен, еще что-то нужно подключить? у AM может же несколько конфигураций быть, в databindings.cpx в разделе dataControlUsages для каждого AM указывается, какая конфигурация используется. У вас указана конфигурация, в которой используется кастомный EnvInfoProvider? Да, указана. Такое ощущение, что где-то перезатирается енвиронмент. Он заходит в провайдер, делает put нужного DS, выходит и когда заходит в след раз, то видит тот, что указан по умолчанию в entities....я думаю, что либо у меня DS как-то некорреткно настроены, либо настройки в самом проекте где-то хромают... не знаю куда еще смотерть. Это JD 11g R2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2012, 12:20:52 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
Oksana PalunMOHAX777пропущено... у AM может же несколько конфигураций быть, в databindings.cpx в разделе dataControlUsages для каждого AM указывается, какая конфигурация используется. У вас указана конфигурация, в которой используется кастомный EnvInfoProvider? Да, указана. Такое ощущение, что где-то перезатирается енвиронмент. Он заходит в провайдер, делает put нужного DS, выходит и когда заходит в след раз, то видит тот, что указан по умолчанию в entities....я думаю, что либо у меня DS как-то некорреткно настроены, либо настройки в самом проекте где-то хромают... не знаю куда еще смотерть. Это JD 11g R2. кхм, у меня "на лету" переключение не нужно было - только при создании AM. Сделал тестовое приложение. Если отключить pooling в конфигурации AM, то начинает работать переключение DS "на лету". Т.е. отсюда делаем вывод - DS задаётся на этапе создания AM и после помещения его в пул изменить DS с помощью кастомного EnvInfoProvider не получится (ну или надо дёргать какие-то дополнительные методы для переподключения в AM). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 16:21:42 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
P.S. Возможно, поможет использование jbo.doconnectionpooling = true и jbo.txn.disconnect_level = 1 в конфигурации AM, но там свои особенности: http://andrejusb.blogspot.ru/2011/10/adf-bc-tuning-with-do-connection.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 16:33:48 |
|
||
|
Переключение DataSource в ADF
|
|||
|---|---|---|---|
|
#18+
MOHAX777кхм, у меня "на лету" переключение не нужно было - только при создании AM. Сделал тестовое приложение. Если отключить pooling в конфигурации AM, то начинает работать переключение DS "на лету". Т.е. отсюда делаем вывод - DS задаётся на этапе создания AM и после помещения его в пул изменить DS с помощью кастомного EnvInfoProvider не получится (ну или надо дёргать какие-то дополнительные методы для переподключения в AM). Ок, низя, значит низя....при указании DS до создания AM работает, что правда придецца менять логику, но хоть так. НО тут тоже есть так сказать проблемка.... при каждом запросе на сервере он создает новый коннект, т.е. получается, пользователей 1 шт, а коннектов на него создается миллион штук, это не есть гуд, т.к. место на сервере очень ограничено... хотелось бы, чтобы на один DS был 1 коннект и он использовался при всех запросах. Фловзы настроены на Use existing transaction if possible. Где моя ошибочка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 18:44:12 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2130294]: |
0ms |
get settings: |
14ms |
get forum list: |
29ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 284ms |
| total: | 446ms |

| 0 / 0 |
