Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сессия Oracle [D5, Oracle]


Юрий Федоров ©   (2002-03-18 16:52:00) 

Имеем приложение с открытой сессией Oracle. Существует ли возможность заставить другое приложение подключиться к этой же сессии? Оба приложения написаны на D5 с использованием ODAC


Johnny Smith   (2002-03-19 16:21:00) [1]

2Юрий Федоров (насчет единого адресного пространства)
Сейчас навскидку я этого не скажу. Где-то дома валялась книженция, по которй я пару лет назад делал нечто подобное (ради интереса), но сейчас подзабыл :-))
Спроси на основной конференции, там наверняка скажут. Я же смогу ответить не раньше чем завтра.


Юрий Федоров   (2002-03-19 14:26:00) [2]

>Johnny Smith
А каким образом обеспечить единое адресное пространство?
Вообще мне странно, что эта тема нигде не обсуждается(по крайней мере я не нашел), ведь ситуация вполне жизненная, например работа
разных приложений в пределах одной транзакции.


Johnny Smith   (2002-03-19 14:20:00) [3]

Да в принципе это возможно. Нужно только обеспечить единое адресное пространство для двух процессов. Проблема здесь в другом: как правильно "зарулить" очередями. Ведь многопоточность в одной сессии доступна только в Oracle 9i


Юрий Федоров   (2002-03-19 13:43:00) [4]

>Yuvich © (18.03.02 19:08)
К сожалению, это справедливо только для 16-битных библиотек.
Попробуй создать глобальную переменную - экземпляр класса
в dll(например в инициализации) и получить ее из двух приложений. Адреса могут и совпасть, но это будут две ссылки на РАЗНЫЕ экземпляры класса.
ТО, что мы видим в Demos - обратная ситуация, dll использует ссылку на экземпляр, созданный в exe

Поставим вопрос по другому: handle, возвращаемый функцией
OCISessionBegin - является ли он уникальным в системе(можно ли один handle использовать в разных процессах)?


Yuvich   (2002-03-18 19:08:00) [5]

В том то и дело, что при загрузке второго приложения и попытке загрузки dll вторым приложением, второй копии dll не будет (не должно быть), т.о. оба приложения будут использовать ОДНУ копию dll


Юрий Федоров   (2002-03-18 17:48:00) [6]

Дело в том, что при загрузке одной dll двумя разными приложениями
их адресные пространства пересекаться не будут. Таким образом,
один и тот-же экземпляр объекта не может быть доступен им одновременно. Или я не прав?


Yuvich   (2002-03-18 17:28:00) [7]

Я думаю, можно. Надо чтобы сессия была в разделяемом ресурсе, например в DLL. Я лично сам не пробовал, но посмотри в <Путь к ODAC>\Demos\Dll. По-моему, там именно это и делается (ключевое слово AssignSession).


Наверх

Титульная страница Поиск, карта сайта Написать письмо