Описание
У меня есть проект Parent GWT, использующий плагин gwt-maven-plugin. Этот проект разделен на 2 подпроекта: Domain и WebApp, и каждый проект содержит файлы pom.xml. Я хотел бы отделить код домена от кода клиента GWT.
Родительский проект
- / Родитель
- / Родитель / pom.xml
Домен проекта
[1] Я думаю об этом как о серверной части приложения, которое работает на сервере
- / Родитель / Домен
- / Родитель / домен / pom.xml
- ... / бобы / PersonBean.java
- ... / dao / PersonDAO.java
- ... / услуги / PersonService.java
- ... / Util / DateUtil.java
- ... / GWT / клиент / GWTPersonService.java
- ... / GWT / сервер / GWTPersonServiceImpl.java
- ... / gwt / shared / GWTPersonDTO.java - DTO (объект передачи данных)
Проект WebApp
[2] Я считаю его клиентской частью приложения, которое запускается в веб-браузере.
- Родитель / WebApp
- Родитель / WebApp / pom.xml
- ... / GWT / клиент / PersonUI.java
- ... / gwt / util / GWTUtility.java - это служебный класс, вызываемый компонентами GWT, он не используется на сервере
- ... / WebApp / WEB-INF / web.xml
- ... / WebApp / Page.css
- ... / WebApp / page.html
Диаграмма последовательности
PersonUI будет вызывать методы GWTPersonService, которые вызывают PersonService (мне нужно это разделение, потому что PersonService.java также будет вызываться не-GWT-клиентами).
PersonService вызовет PersonDAO, который использует и возвращает экземпляры PersonBean. Затем PersonBean преобразуется в GWTPersonDTO и отправляется клиенту с помощью GWTPersonServiceImpl.
Вопросы (отредактировано)
- В каком проекте я должен поместить общий код GWT, который обычно находится в папке / shared?
- Имеет ли смысл иметь GWTPersonServiceImpl.java и GWTPersonService.java в проекте домена? Моя причина в том, что, поскольку все сервлеты живут на сервере, а домен предназначен для серверной части, эти классы должны быть в проекте Domain.
- Должен ли я переместить GWTUtility.java внутри проекта домена?
- Имеет ли смысл использовать DTO? Есть ли способ сделать его более понятным: то есть использовать непосредственно PersonBean?
- Возможно ли запустить этот сценарий в режиме разработчика GWT с помощью maven? Насколько легко это настроить?
- Если у вас есть какие-либо изменения / дополнения в вышеприведенном сценарии, пожалуйста, опубликуйте их - или даже лучше, если вы уже сделали приложение, это очень поможет узнать, как вы справились с этим разделением.
Спасибо!