wsimport将xsd:int绑定到Integer而不是int

时间:2013-07-23 18:51:48

标签: java wsimport

确定。标题真的说明了一切。

我有一个非常大的SOAP服务器,我在java应用程序中调用。为了让我的生活更轻松,我一直在使用wsimport为服务生成源代码和jar。我遇到了一个问题。当我需要将它们作为整数类型时,wsdl中的所有xsd:int类型都被解析为java代码中的int类型。原因是我需要将一些int设置为null,但由于int类型不能为null,我不能这样做。

我目前正在进行并手动更改字段,但我想知道是否有更简单的方法通过对wsimport命令进行修改

这是我当前的wsimport命令。感谢

wsimport.exe -d E:\ServiceWSBuild -p com.example.wsdl -s E:\Service\src -verbose http://wsdl.example.com/?wsdl

以下是执行此操作的其中一种自定义类型的示例:

 <xsd:complexType name="SubPackageSell">
  <xsd:complexContent>
   <xsd:extension base="tns:APIObject">
  <xsd:sequence>
   <xsd:element name="sp" type="tns:SubPackage"/>
   <xsd:element name="value" type="xsd:int"/>
   <xsd:element name="days" type="xsd:int"/>
   <xsd:element name="date" type="xsd:string"/>
   <xsd:element name="combine" type="xsd:boolean"/>
  </xsd:sequence>
   </xsd:extension>
  </xsd:complexContent>
 </xsd:complexType>

1 个答案:

答案 0 :(得分:3)

对于元素,请指定minOccurs="0",wsimport应生成java.lang.Integer而不是原始intminOccursmaxOccurs的默认值为1,这就是您获得原始int的原因。例如:

<xsd:element name="value" type="xsd:int" minOccurs="0"/>