Я использую apache cxf в Spring через опцию «WSDL to Java Code ...» для генерации мыльного клиента из WSDL третьей стороны (не может быть изменено).WSDL имеет следующую структуру:
<Test>
<Example>
<Example>
</Example>
<Example>
</Example>
</Example>
</Test>
Где первый «Пример» на самом деле является массивом.При генерации клиента из WSDL объект домена разрешается в ArrayOfExample, что нормально.Однако при отправке мыльного сообщения через клиента XML именует поле в ArrayOfExample "вместо" Example ", что вызывает сбой службы SOAP из-за некоторой проверки (wsdl ожидает Пример вместо ArrayOfExample)
<Test>
<ArrayOfExample>
<Example>
</Example>
<Example>
</Example>
</ArrayOfExample>
</Test>
Я попытался вручную переименовать имя этого объекта, используя
@XmlElement(name = "Example")
public String getExample() { }
, но в результате я получил следующую ошибку:
IllegalAnnotationsException: Class has two properties of same name
Я неу меня есть доступ для изменения службы SOAP.
К вашему сведению: я просматриваю XML, выполняя следующие действия:
StringWriter sw = new StringWriter();
JAXB.marshal(mySoapRequestObject, sw);
String xmlString = sw.toString();
Что можно сделать, чтобы убедиться, что используемый в нем XML использует "Пример "вместо" ArrayOfExample "?