На стороне клиента, как я должен использовать объекты сложного типа, возвращаемые веб-сервисом CXF? - PullRequest
4 голосов
/ 27 июля 2011

Я только начал использовать 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которые возвращают объекты сложного типа, следует ли вам всегда использовать отдельные объекты, специфичные для клиентских приложений, которые копируют свойства созданных веб-сервисом объектов?Существует ли правило для использования или оно зависит от того, насколько сложны возвращаемые объекты и что клиентское приложение намеревается с ними сделать (например, просто отобразить их, отредактировать и вернуть, сохранить их в базе данных клиентского приложения).

Спасибо, Даррен

1 Ответ

2 голосов
/ 27 июля 2011

Я не вижу проблем в использовании созданного веб-сервисом объекта на стороне клиента. А создание собственного класса и перемещение объектов туда и обратно - это просто процесс убийства времени.

Когда инструмент предоставляет вам функцию реализации, зачем нам нужно вносить изменения вручную. Если есть действительная точка, тогда нужно выяснить.

Итак, мой ответ: вы можете работать с классом Employee, сгенерированным веб-сервисом, для вашей реализации.

...