我正在开发Wildfly 10,JEE上的应用程序。它使用SOAP Web服务。我正在考虑传入一个BigInteger类型的参数。它工作正常,但我不确定这是否可取。 BigInteger如何在WSDL中表示?
@WebMethod(operationName = "myService")
public myResult myService(
@WebParam(name = "param1") BigInteger param1)
throws ServiceException {
}
答案 0 :(得分:0)
异常可能是由于wrking服务使用xsd:integer类型来表示您的BigInteger,而另一个服务使用xsd:int类型。一个人可以正确地代表BigIntegers而不是另一个
下表提供了java类型及其序列化xml版本
之间的常见映射图片参考:(IBM Knowledge base 因此,您可以看到BigInteger应序列化为 xsd:integer 。还有另一种整数类型: xsd:int 。它用于表示带符号的32位整数,因此它不适合BigInteger的范围。另一方面,xsd:integer是无界整数值的表示,因此它将很好地覆盖BigInteger。
如果您遇到这些问题,可能需要xsd架构来从中派生wsdl类型,您可以在wsdl文件中使用以下类型的引用: 例如在你的-wsdl-file.wsdl中你可以添加(在 wsdl:definitions 标签之后)
<wsdl:types>
<xsd:schema>
<xsd:import namespace="http://your/namespace/here" schemaLocation="your-schemafile.xsd"/>
</xsd:schema>
</wsdl:types>
在你的xsd中,你可以使用xsd:integer类型来强制表示你的BigInteger类型。