Обязательный входной параметр в веб-службе (с использованием AXIS2)

Я использую AXIS2 Framework для создания и доступа к веб-сервису. С Axis2 у меня все в порядке. Но у меня есть требование, чтобы при доступе к этому веб-сервису через soapui тестировать веб-сервис; в requestrt.xml должны быть указаны необязательные и обязательные параметры.

Но в настоящее время он показывает, как показано ниже:

                    <soapenv:Body>
                       <xsd:insertsStudent>
                         <!--Optional:-->
                               <xsd:studentId>?</xsd:employeeId>

                         <!--Optional:-->
                              <xsd:emailAddress>?</xsd:emailAddress>
                          </xsd:insertsStudent>
                    </soapenv:Body>         

В приведенном выше примере запроса на мыло я хочу, чтобы studentId был обязательным значением, тогда как я могу отобразить его как обязательное в запросе на мыло (как показано ниже).

                    <soapenv:Body>
                       <xsd:insertsStudent>
                         <!--compulsory:-->
                               <xsd:studentId>?</xsd:employeeId>

                         <!--Optional:-->
                              <xsd:emailAddress>?</xsd:emailAddress>
                          </xsd:insertsStudent>
                    </soapenv:Body>      

person Narendra    schedule 08.11.2010    source источник


Ответы (2)


В образцах запроса/ответа, созданных soapUI, вы получаете комментарий <!--Optional:--> над каждым полем, объявленным необязательным в соответствующем определении типов XSD вашего файла WSDL. Если элемент является обязательным, soapUI ничего не отображает над ним.

Ваше требование очень странное. Вы должны сделать этот элемент обязательным в вашем WSDL, а не заставлять soapUI отображать комментарий <!--compulsory:--> над элементом, который явно является необязательным.

Вышеупомянутое означает, что у вас есть что-то подобное в вашем WSDL:

<xsd:element name="insertsStudent">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="studentId" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="emailAddress" type="xsd:string" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

minOccurs="0" maxOccurs="1" означает необязательный;

minOccurs="1" maxOccurs="1" означает обязательный (обязательный).

Если вы измените minOccurs на 1 для studentId, вы получите обязательное поле, и soapUI отобразит это:

<soapenv:Body>
  <xsd:insertsStudent>
    <xsd:studentId>?</xsd:employeeId>
    <!--Optional:-->
    <xsd:emailAddress>?</xsd:emailAddress>
  </xsd:insertsStudent>
</soapenv:Body>    
person Community    schedule 09.11.2010
comment
Спасибо за ответ. Теперь, когда я сделал поле обязательным, установив атрибуты minOccurs=1 maxOccurs=1 и попытавшись получить доступ к этому веб-сервису через SOAPUI, передав обязательное значение как нулевое, все равно его выполнение выполняется нормально, без каких-либо исключений. Итак, не могли бы вы сообщить нам, является ли это ожидаемым поведением? Заранее спасибо. - person Narendra; 10.11.2010
comment
Если вы измените файл WSDL, вам придется повторно сгенерировать классы-заглушки/каркасы вашего веб-сервиса. Ты сделал это? Для каждого обязательного поля, которое вы не отправляете, Axis2 отвечает недопустимым запросом. Кроме того, как именно вы передавали обязательное значение как нулевое? - person ; 10.11.2010

На самом деле я просто занимаюсь кодированием. Я не создаю файл wsdl (Axis2 автоматически отображает файл wsdl в браузере, когда вы запрашиваете веб-сервис, например http://localhost:8080/services/testwebservice?wsdl).

Итак, не могли бы вы рассказать мне, как мы можем изменить поведение при создании файла wsdl с помощью axis2.

person Narendra    schedule 11.11.2010