Образец клиентского приложения веб-служб PowerBuilder 10.5

Я пытаюсь запустить пример приложения веб-службы PowerBuilder 10.5.2. Я могу нормально открыть рабочую область, и я могу видеть объекты и даже запускать приложение, но я получаю сообщение об ошибке «неверная ссылка на функцию времени выполнения», когда пытаюсь вызвать службу.

Я считаю, что установил все необходимые части:

  • PB 10.5.2
  • Пакет SDK для .Net 2.0

Веб-поиски показывают, что некоторые из веб-служб, используемых в примере приложения, больше не работают, но я не могу представить, что все они таковы, поэтому ошибка указывает на проблему с настройкой или объектами, а не со сторонними службами.

Я вижу файл pbwsclient105.pbd в списке рабочих областей и в каталоге общих объектов Sybase. Однако в качестве теста я попытался использовать альтернативный метод, указанный в документации, для настройки прокси-сервера PB для объектов веб-службы .Net (путем импорта расширений PB из pbwsclient105.pbx) и получил «ошибку недействительной dll», так что, возможно, мой библиотеки веб-сервисов повреждены?

Что еще может отсутствовать? Настройки пути? Неправильная установка .Net 2.0 SDK?


person Bernard Dy    schedule 30.09.2009    source источник
comment
Можете ли вы с помощью мастера создать прокси веб-службы для новой веб-службы?   -  person Doug Porter    schedule 13.11.2009


Ответы (1)


* * * Редактировать: Проблема решена — по крайней мере, на моей машине (компьютерах) * * *

Я взял пример из темы, которую нашел здесь и начал изучать, что происходило с PowerBuilder, когда возникали эти ошибки — как во время импорта АТС, так и во время выполнения, если вы запускали пример приложения.

Один человек в треде упомянул проблему. был связан с libeay32.dll и ssleay32.dll. Это не первый раз, когда OpenSSL дает мне возможность использовать эти компоненты — мой жесткий диск завален ими в различных папках приложений. Эти библиотеки DLL загружаются PB при импорте расширения PBWSCLIENT105.PBX или приложением, использующим связанный PBD во время выполнения. Конечно, с помощью ProcMon я смог подтвердить, что < strong>libeay32.dll и ssleay32.dll загружались из Windows\System32, в отличие от версии тех же DLL, расположенных в структуре папок PB. Судя по всему, это проблема. Я переименовал две библиотеки DLL, расположенные в System32, чтобы эффективно удалить их, запустил PB, и импорт PBWSCLIENT105.PBX работал как по волшебству.


У меня похожая проблема с нашей установкой PB 10.5. Импорт файла PBX дает мне сообщение об ошибке:

---------- Import PB Extension:
Importing C:\Program Files\Sybase\Shared\PowerBuilder\pbwsclient105.pbx - Error: The file is not a valid dll or pbx file.
---------- Finished

Сначала я подумал, что проблема в том, что файлы были повреждены и т. д. Однако я установил PB 10.5 на чистую машину (фактически на виртуальную машину) вместе с .Net 2.0 SDK, и импорт работал безупречно; также я смог вызвать веб-службу. У каждого разработчика в моей группе есть одна и та же проблема на своих машинах, но если они используют «чистую» машину или виртуальную машину с установленным PB (и, возможно, несколькими другими приложениями), импорт файла PBX работает без проблем.

На данный момент я пытаюсь определить, что в среде вызывает проблему, но пока не смог. Что интересно, как вы заметили, так это то, что если вы откроете пример приложения, вы увидите точно такие же импортированные библиотеки; однако вы получаете ошибку во время выполнения. Все это действительно указывает на то, что что-то экологически отсутствует или неправильно зарегистрировано. Итак, если у вас есть возможность использовать виртуальную машину, я рекомендую это как временное решение.

Я добавлю здесь одну вещь: если вы используете Vista или Windows 7 в качестве своей виртуальной машины, импорт библиотеки работает нормально, но у меня были проблемы с созданием прокси-сервера на стороне клиента с использованием механизма веб-службы .Net. Наконец я обнаружил, что в фоновом режиме инструмент SDK WSDL.exe выполняется для WSDL для службы, чтобы создать клиентский прокси-сервер .Net. Оказывается, контроль доступа пользователей Vista/Win7 не позволял запускать WSDL.EXE. Я запустил PowerBuilder «от имени администратора», и все работало, как и ожидалось, с точки зрения создания прокси-сервера на стороне клиента.

Если вы обнаружите что-нибудь о том, почему не работает импорт АТС, мне было бы интересно об этом узнать!

person Peter Meyer    schedule 16.12.2009
comment
Спасибо Питер! Я прибегнул к другому подходу к нашим потребностям в функциональности, но все же хотел бы получить возможность использовать веб-сервисы, работающие в PB. Я дам вам знать, если разберусь. - person Bernard Dy; 17.12.2009
comment
Бернард, пожалуйста! Я сделаю то же самое. Забыл упомянуть, что одним из других способов, которыми мы добились интеграции веб-службы и PB (и приложений на некоторых других платформах), является помещение клиента веб-службы в хранимую процедуру в SQLCLR на SQL Server. По сути, он действует как прокси. Не могу сказать, что я слишком горжусь этим, но иногда нужно просто сделать работу. - person Peter Meyer; 17.12.2009
comment
Питер, ты молодец. Я не понял половины того, что вы сказали о libeay32.dll (пока не посмотрел), но переименование помогло. DLL ад, как говорится. - person Bernard Dy; 22.12.2009
comment
Ха! Спасибо. Да, DLL черт точно! - person Peter Meyer; 22.12.2009