Генерация клиента CXF WebService: использование существующих классов модели предметной области

У меня есть веб-приложение, которое разделено на графический интерфейс (JSF 2.0, Orchestra, Spring) и сервис (Spring, JPA, Hibernate,...). Из-за проблем с сетью между веб-сервером и сервером базы данных мне нужно полностью разделить приложение между уровнями и развернуть их на двух разных котах, чтобы служебная часть находилась рядом с сервером базы данных. Я уже создал веб-сервис и клиент веб-сервиса с помощью плагина Eclipse WTP CXF.

Моя проблема: для клиента он создает копию классов модели предметной области, поэтому я не могу использовать их непосредственно в своем проекте графического интерфейса, и мне нужно будет ввести слой преобразования между клиентом веб-службы и слоем графического интерфейса. Это громоздко и подвержено ошибкам.

Есть ли возможность создать клиент веб-сервиса (из существующего модуля веб-сервиса и wsdl) с использованием модели общего домена (классы моделей находятся в отдельном проекте, от которого зависят как сервис, так и проекты графического интерфейса)?

отчаянно ищу решение, так как крайний срок развертывания близок...


person andreas    schedule 20.04.2011    source источник


Ответы (1)


Создание копии классов модели домена (DTO) является хорошей практикой, когда у вас есть два физических уровня: ваши Hibernate POJO должны быть депроксифицированы перед отправкой на другой физический уровень. Может быть, вы могли бы использовать Dozer, чтобы не тратить на это слишком много времени.

Возможно, вам следует использовать RMI вместо веб-служб, если вам нужна производительность.

Если вы твердо намерены использовать объекты домена на уровне представления, обратите внимание на Gilead (ранее известную как Hibernate4GWT).

Чистые DTO, DTO с Dozer и использование Gilead подробно описаны здесь: http://code.google.com/intl/fr/webtoolkit/articles/using_gwt_with_hibernate.html

person Tristan    schedule 20.04.2011
comment
Вы не нашли мой ответ полезным? Если да, отметьте его как правильный ответ. Чтобы узнать об удаленном взаимодействии RMI, вам необходимо прочитать документацию Spring здесь: static.springsource.org/spring/docs/3.0.x/reference/ - person Tristan; 20.04.2011
comment
В моем последнем ответе была опечатка: насколько хорошей должна быть сеть для RMI? У меня есть около 10 прыжков с задержкой до более 20 мс между (gui) tomcat и db/service tomcat - person andreas; 20.04.2011