В настоящее время я изучаю JAXB и Web-сервис, и у меня есть проблема, которую я не знаю, как решить.
Предположим, у меня есть очень простой класс, который я аннотировал с помощью JAXB.
@XmlRootElement
public class Customer {
private int custID;
private String custName;
//getters and setters
}
И у меня есть этот класс, который я представляю как веб-сервис.(Примечание: я здесь все жестко кодирую для простоты, но это связано с БД)
@WebService
public class CustomerWS {
@WebMethod(operationName = "customerData")
public Customer getCustomer(){
Customer cust = new Customer();
cust.setCustID(12345);
cust.setCustName("John Doe");
return cust;
}
}
Ответ конверта SOAP выглядит следующим образом.
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:customerDataResponse xmlns:ns2="http://test.com/">
<return>
<custID>12345</custID>
<custName>John Doe</custName>
</return>
</ns2:customerDataResponse>
</S:Body>
</S:Envelope>
Теперь предположим, что у меня есть другое свойство в клиентеобъект вызвал статус, и они хотели, чтобы это свойство в качестве атрибута мыльного ответа было таким, как показано ниже, а не являлось частью элемента customer.(A = Активный, I = Неактивный)
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:customerDataResponse status="A" xmlns:ns2="http://test.com/">
<return>
<custID>12345</custID>
<custName>John Doe</custName>
</return>
</ns2:customerDataResponse>
</S:Body>
</S:Envelope>
@XmlRootElement
public class Customer {
private int custID;
private String custName;
//Another Annotation??? (A or I only)
private String status;
//getters and setters
}
Как я могу аннотировать свой класс, чтобы удовлетворить это требование?Спасибо