Последовательность параметров в Axis2 1.7.8

#axis2

Вопрос:

Я развертываю POJO в качестве службы в axis 2 1.7.8 . Ниже приведена сигнатура метода :

 public String authenticate(String username, String password, String dName, String sName) 
{
    return authenticateWithRole(username, password, "", dName, sName);
}

 

Я пропускаю часть, сгенерированную wsdl. Ниже приведен запрос SOAP, созданный в SOAPUI :

 <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:lab="test_authenticate">
   <soap:Header/>
   <soap:Body>
      <lab:authenticate>
         <!--Optional:-->
         <lab:username>a</lab:username>
         <!--Optional:-->
         <lab:password>b</lab:password>
         <!--Optional:-->
         <lab:dName>c</lab:dName>
         <!--Optional:-->
         <lab:sName>d</lab:sName>         
      </lab:authenticate>
   </soap:Body>
</soap:Envelope>
 

Вышеупомянутое МЫЛО работает. Если последовательность параметров будет изменена, то ничего не получится. Например, если я отправлю параметр ‘sName’ в качестве первых параметров, предыдущие значения параметров будут равны нулю :

 <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:lab="test_authenticate">
   <soap:Header/>
   <soap:Body>
      <lab:authenticate>
         <!--Optional:-->
         <lab:sName>d</lab:sName>
         <!--Optional:-->
         <lab:username>a</lab:username>
         <!--Optional:-->
         <lab:password>b</lab:password>
         <!--Optional:-->
         <lab:dName>c</lab:dName>
         
      </lab:authenticate>
   </soap:Body>
</soap>
 

Это означает, что последовательность параметров имеет значение на оси 2.

Как мне изменить это, чтобы второе МЫЛО также работало, и клиент не был обязан отправлять параметры в фиксированной последовательности.

Спасибо

Ответ №1:

Проблема заключалась в методе BeanUtils.deserialize библиотеки apache-adb. Поэтому, если параметры в не отправляются в том порядке, в котором они определены на уровне метода, параметры, которые возвращаются в порядке, устанавливаются равными нулю.

Нужно исправить код.