Вопрос

Я пытаюсь использовать некоторые веб-сервисы .NET с помощью JAX-WS.Я создал классы Java с помощью инструмента wsimport.Однако когда я пытаюсь использовать эти (собственные, а не общедоступные) веб-сервисы на Java, я замечаю, что большинство методов и свойств, предоставленных поставщиком в примерах C#, недоступны в сгенерированных классах (несмотря на то, что не было обнаружено никаких ошибок). при создании классов Java из файла WSDL).Подключение к веб-сервисам также в принципе работает.

Когда я попытался создать класс C# с помощью wsdl.exe из .NET SDK, все методы были сгенерированы правильно.

Как лучше всего использовать веб-службы .NET, чтобы полная функциональность была доступна в Java, и почему wsimport генерирует только небольшое подмножество всех методов и свойств, описанных в файле WSDL?

Пример:в WSDL-файле UserManagement.wsdl есть фрагмент


<s:schema elementFormDefault="qualified" targetNamespace="http://www.initechsystems.com/initech7/initechws/">
  <s:element name="UserSecurityContext" type="s2:UserSecurityContext"/>
  <s:complexType name="UserSecurityContext">
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="Token" type="s2:UserToken"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="UserToken">
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="Value" type="s:string"/>
    </s:sequence>
  </s:complexType>
</s:schema>

В C# я могу получить доступ к UserSecurityContext следующим образом:


UserManagement userMgmt = new UserManagement();
userMgmt.UserSecurityContextValue = new SampleWS.UserRef.UserSecurityContext();
Однако в Java я могу создать объект UserManagement.


UserManagement userMgmt = new UserManagement();

но сгенерированный объект UserManagement не имеет ни доступного объекта SecurityContext, ни методов получения или установки для такого частного объекта.

Это было полезно?

Другие советы

Я хотел бы увидеть пример, о котором вы говорите, поскольку похоже, что этот пример отправляет по сети объекты с поведением, а не просто модели (или сообщения, если вы предпочитаете лучший термин SOA).

Когда вы отправляете объект, сформированный как модель данных или сообщение, он не будет содержать методы, которые можно использовать.А при взаимодействии не имеет особого смысла настраивать поведение (методы) для передачи по сети.

Что касается того, что вы можете сделать, поскольку вы сериализуете, вы можете создавать поведенческие методы, если они имеют смысл с вашей стороны.Лично я бы создавал поведение в других объектах и ​​сохранял модели/сообщения как контейнеры состояний.Но ваш пробег может отличаться.;-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top