Форум: "Corba";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
ВнизПро устойчивость VisiBroker for C++ 4.1 Найти похожие ветки
← →
Олег Лаукарт © (2002-05-15 12:32) [0]Коллеги, кто реально пользуется продуктом, поделитесь впечатлениями. У меня создается впечатление, что с устойчивостью есть проблемы. Хотелось бы услышать обратное и понять причину следующих проблем.
Комбинация: VisiBroker for C++ 4.1, D6, Up1, BOA, Windows NT.
Одна проблема описана в http://www.corbaejb.mastak.ru/ikonboard/ikonboard/topic.cgi?forum=6&topic=8
Вот вторая:
Создаю на Д6 сервер, регистрирующий в ВОА три поименованых корба объекта. Они доступны из клиентских программ. Запускаю Inprise Visibroker Console и в Location Service выбираю Object Instances. Замечено два негативных исхода. Первый - консоль долго не может ничего найти. Второй хуже и именно вызывает интерес - моя серверная программа слетает:
"application-defined exception (code 0xc00000fd) at ..." под дебагером выяснилось, что ошибка возникает в модуле vport_br (vport_br.@VISMutex_var@$bctr$qr8VISMutexuc).
Заранее благодарен,
Олег Лаукарт.
← →
fnv-hope © (2002-05-27 08:21) [1]Увы, обратного сказать не могу, могу только повторить, что есть проблемы (об этом писалось в дисскуссии "Создание фабрики и объектов".
← →
Олег Лаукарт © (2002-06-25 12:41) [2]С того момента, как я озвучил описанную выше проблему, прошло много времени. Разные люди периодически спрашивают меня по почте, решил ли я ее. Отвечаю: к большому моему огорчению и опасению НЕТ. Пока частично выкрутился за счет пересмотра внутренней логики системы, но это все баловство. Надежды на следующие обновления продукта, возможно в них будет устранена эта ошибка. Есть также надежда, что решение можно найти, разобравшись в опциях для Визиброкера, но пока... Если найду решение, то обязательно поделюсь (сдесь же).
С уважением, Олег Лаукарт.
← →
sesam (2002-07-30 15:34) [3]Добрый день!
Рискую быть сильно побитым почитателями только Delphi и только C++, но:
если использовать способность C++Builder"а цеплять pas- и dcu- модули, можно с минимальными усилиями (в основном, связанными с передачей составных типов и строк) довести Ваш Delphi-сервер до работоспособного состояния: во-первых, сервер не будет слетать при его поиске в VisiBroker Console, во-вторых, снимется проблема "Assertion faild: _reply_message!=(Protocol Engine::ReplyMessage*)Null, file vsrvreph.c? line 52" (и куча других, описанных в этом Форуме), в-третьих, Вам не нужно трогать реализацию бизнес-логики - достаточно переписать только фабрики и управление объектами с состоянием, что не так уж и сложно, и, наконец, Вы получаете POA, с которым работать гораздо комфортнее.
1. В CBuilder создаете CORBA-сервер и, на основании Вашего idl-файла, заглушки реализаций объектов (пока все автоматически).
2. В pas-файле реализаций серверных методов заменяете методы объектов на процедуры (убираете, напр., точку между именем объекта/метода), выпалываете лишнее и включаете этот файл в проект (простои контекстная замена).
3. В xxxServer.cpp вставляете #include "имя pas-файла.hpp" и оформляете вызовы его процедур (тут прийдется немного повозиться...).
4. Дописываете реализацию объектов с состоянием...
Вот, собственно, и все.
Естественно, это подмена понятий, и CORBA реализована на CPP, но когда нужно перевести большое существующие D-приложение в N-звенку, такое решение, по-моему, имеет право на существование.
После того, как количество клиентов возросло, и D-сервер стал устойчиво падать, в качестве временной меры мне пришлось сделать вышеописанное. Не знаю, может, я что-то не заметил, но пока все работает.
А вообще, я понял, что нужно слушаться знающих людей (Цимбал, Орлик и др.) и не писать сервера на Delphi (по кр. мере, пока).
Удачи.
Сергей.
P.S.: Если у кого-то есть опыт в написании подобной конструкции, пожалуйста, поделитесь впечатлениями и проблемами. Или утверждением, что так делать нельзя.
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c