Здравствуйте. В кратце о задаче: необходимо, чтобы клиент обменивался с сервером строкой (а точнее XML документом в виде строки) посредством объектов CORBA. Клиент готов и работает, проблема в "сервере": при получении ссылки на корневой объектный адаптер RootPOA:
происходит НЕЧТО, мешающее дальнейшему запуску брокера — orb:
orb->run();
т. е. программа просто виснет: выполняются все операторы до orb->run();, на котором всё стопорится. Если закомментировать получение ссылки, то запуск orb'а проходит успешно, другое дело, что он такой не нужен. В той документации на CORBA, которую нашёл в инете ничего полезного мне не оказалось. Вот весь код:
Re[2]: CORBA в С++ Builder 6: не удаётся запустить ORB
От:
Аноним
Дата:
14.07.03 11:06
Оценка:
Здравствуйте, kavlad, Вы писали:
K>Клиентский код без багов K>Смтри код сервера.
Собственно говоря, это и есть код сервера, т.к. он не работает. Т.е. если не запускать ОРБ в конце, то клиент сможет отправить запрос, сервер его выполнит, но отправить результат своих действий не сможет, т.к. не знает, куда. Вот ещё текст непосредственно самого выполняемого запроса:
Попробуй явно указать ServantRetensionPolicy как RETAIN.
Хотя она по умолчанию принимает это значение.
Нет предела совершенству!
Re[4]: CORBA в С++ Builder 6: не удаётся запустить ORB
От:
Аноним
Дата:
15.07.03 05:33
Оценка:
Здравствуйте, kavlad, Вы писали:
K>Здравствуйте, <Аноним>, Вы писали:
K>Попробуй явно указать ServantRetensionPolicy как RETAIN. K>Хотя она по умолчанию принимает это значение.
При создании sqrPOA я указал в его списке Policy, что необходимо использовать SRP как RETAIN, как вы и сказали, но это не помогло. Дело в том, что работа стопорится уже на полученни объектной ссылки на RootPOA, я просто комментировал все строчки после определения ОРБ'а до его запуска, так всё работало, но стоило мне добавить ещё
как всё вставало. Я делал эту программу, используя книжку А. Цимбала, смотрел его пример, да и вообще мой сервер практически целиком — его, наверное, у меня руки кривые, но это всё равно не объясняет, почему всё рушится при определении RootPOA. И вот что бесит меня больше всего: я уверен на сто %, что ошибка так же проста как детский мат, но чтобы её найти придётся мне ещё долго посидеть. Но, в обсчем, нам не привыкать Сейчас попробую сделать консольный сервер, чтобы совсем всё было как по книжке, посмотрим, что получится.
Re[5]: CORBA в С++ Builder 6: не удаётся запустить ORB
Здравствуйте, <Аноним>, Вы писали:
А>как всё вставало. Я делал эту программу, используя книжку А. Цимбала, смотрел его пример, да и вообще мой сервер практически целиком — его, наверное, у меня руки кривые, но это всё равно не объясняет, почему всё рушится при определении RootPOA. И вот что бесит меня больше всего: я уверен на сто %, что ошибка так же проста как детский мат, но чтобы её найти придётся мне ещё долго посидеть. Но, в обсчем, нам не привыкать Сейчас попробую сделать консольный сервер, чтобы совсем всё было как по книжке, посмотрим, что получится.
Ну у Цимбала код отличается
Нет предела совершенству!
Re[6]: CORBA в С++ Builder 6: не удаётся запустить ORB
Здравствуйте, kavlad, спасибо вам большое за участие, дело всё таки было даже не в моих кривых руках, а в моей кривой голове, стыдно признаться:
просто после строки orb->run(); orb переходит в режим ожидания запросов, а т.к. у меня вся программа выполняется в одном потоке, то всё, что идёт дальше будет ждать до тех пор, пока не закроется orb, поэтому и не происходила активация формы, находящаяся дальше по тексту, что я рассчитывал за стопор всей программы.
После таких вот ошибок хочется обрить голову и уйти в монастырь (хотелось бы, конечно, в женский ). Но, это общеизвестно, чем больше практики — тем больше опыта, и, следовательно, больше шанс распознать ошибку от просто нормальноработающей программы . Ещё раз спасибо за участие, извиняюсь за ваше потраченное время, но уж больно безысходной стала ситуация на момент создания мною топика, уже не знал, остались ли вокруге столбы на которые я не лазил от отчаяния.