Как WSDL используется в Oracle Service Bus?

Я создал OSB Service с использованием WSDL и выбрал Binding. Теперь, когда мой клиент пытается вызвать службу, используя предоставленный мной WSDL, они получают ошибки. Кроме того, имя привязки в WSDL, которое я предоставил, и WSDL, который они извлекают из URL, отличается. Что происходит?

1 ответ

Решение

Согласно документации OSB,

Когда вы создаете сервис на основе ресурса WSDL, вы должны базировать сервис на порте WSDL или на привязке WSDL:

  • Когда вы создаете новую службу на основе привязки в ресурсе WSDL, вы выбираете протокол и формат данных, определенные в выбранном элементе в ресурсе WSDL.
  • Когда вы создаете новую службу на основе порта в ресурсе WSDL, вы выбираете привязку и сетевой адрес, определенные в элементе.

При создании или изменении службы вы можете изменить транспорт, но не можете переопределить формат данных.

Определения порта и привязки из исходного ресурса WSDL изменяются в действующем WSDL в зависимости от ряда факторов, как описано ниже.

Если сервис основан на привязке:

  • Если служба генерируется из привязки Y в ресурсе WSDL, эффективный WSDL определяет новую службу и порт (QSService и QSPort). Ни один из портов, определенных в ресурсе WSDL, не включен в действующий WSDL.
  • В этом WSDL может быть несколько портов, связанных с этой привязкой. Каждый порт может использовать свой URL. Поэтому эффективный WSDL использует привязку, но генерирует искусственный порт из конфигурации службы для этой привязки. Все остальные порты будут удалены ".

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

Другие вопросы по тегам