Я только начал использовать CXF 2.4 для предоставления некоторых методов в существующем веб-приложении.Один из методов возвращает объект сложного типа - Employee, который имеет объект Address в качестве свойства.
Объект сотрудника выглядит следующим образом:
public class Employee implements Serializable {
private String gid;
private String name;
private Address employeeAddress;
//...getters and setters omitted
}
Подпись метода в интерфейсе на стороне службы выглядит следующим образом:
Employee getEmployee(@WebParam(name="gid") String gid);
На стороне клиента я использовал CXF WsdlToJavaУтилита для генерации моих заглушек на стороне клиента по wsdl-адресу сервера и с удовольствием использовала объект Employee в моем клиентском веб-приложении.
Сегодня коллега указал мне, что я не должен использовать объекты, сгенерированные веб-сервисом, в коде моего клиентского приложения.Вместо этого я должен создать класс Employee, специфичный для моего клиентского веб-приложения, и скопировать свойства из объекта Employee веб-службы в мое приложение Employee, чтобы предотвратить попадание кода веб-службы в базу кода.
Для меня этокажется чрезмерным, по сути, я создам класс Employee плюс класс Address и скопирую свойства туда и обратно между объектами этих типов и объектами веб-сервисов.
В моем приложении я отображаю детали объекта Employee на странице JSP, но больше ничего с ним не делаю.
Итак, подведем итог моего вопроса - при использовании вызовов веб-службы в CXFкоторые возвращают объекты сложного типа, следует ли вам всегда использовать отдельные объекты, специфичные для клиентских приложений, которые копируют свойства созданных веб-сервисом объектов?Существует ли правило для использования или оно зависит от того, насколько сложны возвращаемые объекты и что клиентское приложение намеревается с ними сделать (например, просто отобразить их, отредактировать и вернуть, сохранить их в базе данных клиентского приложения).
Спасибо, Даррен