Форум: "Основная";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
ВнизЧайниковская проблема с Class Factory Найти похожие ветки
← →
Сан Саныч (2003-08-26 03:12) [0]Помогите :) Есть программа, реализованная в виде
in-process (dll) ole automation server-а, которая
при запуске (init) спрашивает пароль у юзера и
далее использует этот пароль во всех выданных
клиентских объектах (через CoCreate) для работы с
зашифрованными ресурсами. Т.е. идея в том, что он,
пароль, спрашивается только 1 раз, и далее объекты
могут создаваться где угодно и будут использовать
этот общий пароль без повторных запросов.
Все бы хорошо, когда оно используется в одной
программе, т.е. легко создается массив объектов,
пароль спрашивается 1 раз (при первом создании).
Но если параллельно запустить 2-ю копию клиента -
то пароль спрашивается еще раз, т.е. опять идет
инициализация класс фактори, в ней пароль пустой
и он спрашивается еще раз :( что делать ?
Немного сумбурно, извините, но нужно чтобы неважно
где создавались объекты, в моих ли приложениях или
скажем в ИЕ, но пароль спрашивался бы только в том
случае если refCount созданных объектов был = 0
х.е.л.п. :)
← →
Palladin (2003-08-26 09:19) [1]
> только в том
> случае если refCount созданных объектов был = 0
ну вот же, ты сам указал условие...
спрашивай пароль только в этом случае...
иначе пропускай...
← →
Сан Саныч (2003-08-26 10:54) [2]Так он зараза для каждого запущенного приложения равен 0.
Такое чувство что класс фактори создается для каждого клиента своя.
← →
Внук (2003-08-26 11:07) [3]В качестве предположения.
Если COM-класс написан как Multi-Instance, то так и будет. А если попробовать Single-Instance?
← →
Сан Саныч (2003-08-26 11:40) [4]Нет, я пробовал поиграться с флагами - не помогло :(
← →
Юрий Федоров (2003-08-26 11:44) [5]В случае in-process (dll) сервер подргужается в адресное пространство клиента, если клиента 2 - то будут 2 копии сервера, разве не так ?
Так что может тут только внешним сервером решится проблема ?
← →
Внук (2003-08-26 11:54) [6]>>Юрий Федоров © (26.08.03 11:44) [5]
Да, слова про in-process server я пропустил :))
← →
Skier (2003-08-26 12:01) [7]Не бейте ногами, но мне кажется что копия для in-process будет одна, но дело в том что, например, все глобальные переменные dll инициализируются
нулями при каждой загрузке библиотеки. Может в этом дело ? Нет ?
← →
Erik (2003-08-26 12:28) [8]Только внещний exe сервер тебе поможет.
Аминь.
← →
Сан Саныч (2003-08-26 12:51) [9]А как в дельфи внешние (local?) сервера делать ?
В доках об этом ни слова не нашел, хотя может плохо искал...
← →
Юрий Федоров (2003-08-26 12:57) [10]Создаешь обычный exe, потом запускаешь визард
new -> axtiveX -> automation object
← →
Сан Саныч (2003-08-26 13:20) [11]спасибо всем :)
← →
Erik (2003-08-26 13:59) [12]Можно еще подменить библиотеку для класс фактори, на многопоточную. Она у Borland есть и Ben Li делал.
← →
Serginio666 (2003-08-26 14:50) [13]Class Factory будет создана 1, но выдавать ссылки объектов клиенту она будет по разному в зависимости от TThreadingModel.
Можно использовать глобальные переменные DLL или почитать про реализацию синглетона http://www.rsdn.ru/article/atl/atlsingleton.xml
соответсвенно переделав TAutoClassFactory.
← →
Serginio666 (2003-08-26 14:59) [14]Извините, не дочитал, что два разных екзешника. Только внешний сервер.
← →
Serginio666 (2003-08-27 18:28) [15]Можно использовать FileMapping при использовании in-process (dll) ole automation server-а
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c