2016-11-10 75 views
0

我正在开发Wildfly 10,JEE上的应用程序。它使用SOAP Web服务。我正在考虑传入一个BigInteger类型的参数。它工作正常,但我不确定这是否可取。 BigInteger在WSDL中如何表示?在Soap Webservice中传递BigInteger参数

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

    } 

回答

0

唯一的例外可能是由于该wrking服务使用XSD的事实:整数类型来表示你的BigInteger而其他服务使用的xsd:整型。一个能正确表示BigIntegers而不是其他

下表为您提供了Java类型和它们的序列化的XML版本

java types xml serialization

图片参考之间的共同映射:(IBM Knowledge base 因此,大家可以看到的BigInteger应该被序列化为xsd:整数还有另一种整数类型:xsd:int它用来表示一个有符号的32位整数,所以它不适合BigInteger的范围另一方面xsd :整数是一个代表一个无限整数值的表示,所以它将覆盖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类型的右表示。