Служба Axis2 и параметры примитива (проблема с клиентом C#)

Я развернул службу "hello world" (Tomcat + Axis2):

public class ServerLogic {
    public int add(int x, int y) {
        return x + y;
    }
}

Но Axis2 сгенерировал WSDL следующим образом:

<xs:element name="add">
    <xs:complexType>
        <xs:sequence>
            <xs:element minOccurs="0" name="x" type="xs:int"/>
            <xs:element minOccurs="0" name="y" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="addResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element minOccurs="0" name="return" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Когда я сгенерировал клиент С# с помощью этого WSDL, я получил метод с этой сигнатурой:

 void add(int x, [System.Xml.Serialization.XmlIgnoreAttribute()] bool xSpecified,
          int y, [System.Xml.Serialization.XmlIgnoreAttribute()] bool ySpecified,
out int @return, [System.Xml.Serialization.XmlIgnoreAttribute()] out bool returnSpecified);

Как я понимаю, *Specified-параметры - это результат minOccurs="0". Итак, как я могу сказать Axis2 удалить этот minOccurs="0" из сгенерированного WSDL?


person Alexander Kholodovitch    schedule 26.05.2013    source источник


Ответы (1)


Вы можете создать файл WSDL, а затем настроить его.

Для создания файла WSDL вы можете использовать Java2WSDL Axis2, как указано здесь: http://axis.apache.org/axis2/java/core/docs/quickstartguide.html#ready (полная ссылка здесь: http://axis.apache.org/axis2/java/core/docs/reference.html)

Вы также можете создать файл wsdl с помощью Apache Ant, как в примере с кратким руководством: http://axis.apache.org/axis2/java/core/docs/quickstartguide.html#deploy.

Настроенный файл WSDL необходимо поместить в папку META-INF.

person danielevigi    schedule 28.05.2013