Как получить доступ к реестру в WSO2 ESB - PullRequest
1 голос
/ 15 марта 2012

Как ссылаться на файлы WSDL из реестра при определении новой прокси-службы?Я использую WSO2 ESB.

Q1: Могу ли я использовать элемент localEntry для определения WSDL в моей прокси-службе?Например:

localEntry key="my_wsdl" src="file:/wsdl/MyServiceSOAP.wsdl"

При условии, что я ранее использовал Консоль управления > Добавить коллекцию > создать "wsdl" и Добавить ресурс > MyServiceSOAP.wsdl.У меня проблема со значением "src", оба

"/wsdl/MyServiceSOAP.wsdl" 
и
"wsdl/MyServiceSOAP.wsdl" 
не работают.Я следую документации , но они не показывают, как загрузить WSDL в реестр.

Q2: Что если MyServiceSOAP.wsdl импортирует MyService.wsdl?Мне также нужно использовать Добавить ресурс для MyService.wsdl, но нужно ли мне что-то еще делать, чтобы Proxy компилировался?

Ответы [ 2 ]

4 голосов
/ 15 марта 2012

Я думаю, что вы ссылаетесь на реестр здесь.Пространство реестра в каждом продукте содержит три основных раздела.

  • Локальный
  • Конфигурация
  • Управление

Registry Space in the ESB Реестр конфигурациисодержит конкретную конфигурацию продукта, которая может использоваться несколькими экземплярами одного и того же продукта (например, кластер узлов ESB).Таким образом, вы можете создать коллекцию WSDL в реестре Config и ссылаться на нее следующим образом:

"conf:/wsdl/MyServiceSOAP.wsdl"

Загружая ресурсы в Registry, вы также можете легко выбирать их при создании прокси-службы.enter image description here

Я думаю, что вы можете ссылаться на ресурсы как «file: /wsdl/MyServiceSOAP.wsdl» только тогда, когда они находятся в каталоге с именем «wsdl» в локальной файловой системе.Кстати, о сообщениях об ошибках. Если вы посмотрите журналы сервера ESB, вы увидите следующую ошибку при попытке обновить прокси, ссылаясь на несуществующий файл.

Caused by: java.io.FileNotFoundException: ./wsdl/MyServiceSOAP.wsdl (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:120)
    at java.io.FileInputStream.<init>(FileInputStream.java:79)
    at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
    at org.apache.synapse.config.SynapseConfigUtils.getObject(SynapseConfigUtils.java:197)
    ... 46 more
2 голосов
/ 25 августа 2015

Я нашел простое решение для этого из блога: в моем сценарии у меня был wsdl, который импортировал другой wsdl, который импортировал xsd.Фактические структуры были во втором wsdl.

Строка импорта в оригинальном wsdl:

    <wsdl:import namespace="http://www.somedomain.com/interface/v1_0" location="service_interface_1_0.wsdl"/>

Строка импорта во втором wsdl:

    <xsd:import namespace="http://www.somedomain.com/data/v1_0" schemaLocation="data_types_1_0.xsd"/>

Требуется xml напрокси:

    <publishWSDL key="file_required_service_1_0.wsdl">
  <resource location="service_interface_1_0.wsdl"
            key="file_service_interface_1_0.wsdl"/>
  <resource location="data_types_1_0.xsd"
            key="file_data_types_1_0.xsd"/>

Где у меня есть локальные записи для "file_required_service_1_0.wsdl" и т. д. именованные локальные записи, которые содержат исходные файлы wsdl и xsd.

...