2013-07-23 1 views
1

Ok. Название действительно говорит все.wsimport bind xsd: int в Integer вместо int

У меня очень большой SOAP-сервер, который я вызываю в приложении Java. Чтобы облегчить мою жизнь, я использовал wsimport для генерации источника и банку для службы. Я просто столкнулся с проблемой. Все типы xsd: int в wsdl анализируются как типы int в java-коде, когда они мне нужны как типы Integer. Причина для этого - некоторые из int, которые мне нужно установить как null, но поскольку типы int не могут быть null, я не могу этого сделать.

я в настоящее время переживает и вручную изменять поля, но я хочу знать, если есть более простой способ сделать это через agrument к команде 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> 
+0

Атрибуты с 'использованием =«требуется»' будет примитивным 'int', в противном случае они будут' java.lang.Integer' – DannyMo

+0

я добавил пример одного из сложных типов. Как видите, в атрибутах нет указаний. – Pyromanci

+0

Извините, предполагается, что вы использовали атрибуты, а не элементы. См. Мой ответ ниже – DannyMo

ответ

2

Для элементов, указать minOccurs="0" и wsimport должны генерировать java.lang.Integer вместо примитивной int. Значения по умолчанию для minOccurs и maxOccurs - это 1, поэтому вы получаете примитив int s. Например:

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

, так что в основном все зависит от wsdl .. Это означает, что вы не можете контролировать способ создания кода клиента (например,). – sataniccrow

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

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