2016-11-10 9 views
0

Я разрабатываю приложение на Wildfly 10, JEE. Он использует веб-службы SOAP. Я подумываю передать параметр типа BigInteger. Он работает нормально, но я не уверен, что это целесообразно. Как BigInteger представлен в WSDL?Передача параметра BigInteger в Soap Webservice

@WebMethod(operationName = "myService") 
public myResult myService(
      @WebParam(name = "param1") BigInteger param1) 
      throws ServiceException { 

    } 

ответ

0

Исключение, вероятно, связано с тем, что служба wrking использует XSD: целочисленный тип для представления вашего BigInteger в то время как другая служба использует XSD: Int типа. Можно правильно представлять BigIntegers, но не другой

Следующая таблица дает общие сопоставления между типами Java, а их сериализованным XML версиями эталонного

java types xml serialization

Фото: (IBM Knowledge base Так как вы можете видеть BigInteger должен быть сериализован до xsd: integer. Существует еще один целочисленный тип: xsd: int. Он используется для представления подписанного 32-битного целого числа, поэтому он не вписывается в диапазон BigInteger. С другой стороны, xsd : integer - это репутация resentation неограниченного целочисленного значения, поэтому он хорошо охватывает BigInteger.

Если у вас возникли эти проблемы вы могли бы вам XSD схема для вывода ваших типов WSDL из, вы можете использовать следующий тип ссылки в файле WSDL: , например, в Вашем WSDL-file.wsdl вы можете добавить (сразу после WSDL: определения тег)

<wsdl:types> 
    <xsd:schema> 
     <xsd:import namespace="http://your/namespace/here" schemaLocation="your-schemafile.xsd"/> 
     </xsd:schema> 
</wsdl:types> 

в вашей XSD можно использовать XSD: целочисленный тип, чтобы заставить правильное представление Юр типа BigInteger.

 Смежные вопросы

  • Нет связанных вопросов^_^