Как собрать Spring Roo и GWT вместе - PullRequest
3 голосов
/ 19 июля 2010

Я пытаюсь разработать приложение Spring Roo / GWT с новейшей интеграцией GWT в Roo.

Очень просто заставить работать строительные леса, но я не совсем понимаю, как там работает RPC.

Может кто-нибудь из вас предоставит простой пример того, как сделать простой сервис для соединения клиент / сервер в Spring Roo и GWT.

Было бы очень полезно для начала, поскольку я не могне найти никакого ресурса на этом.

спасибо и привет, Flo

Ответы [ 2 ]

7 голосов
/ 21 июля 2010

Flo

Не уверен, что вы вообще на Google Wave, но, похоже, это одно из мест, где можно идти в ногу с текущими усилиями. В частности, эта волна доступна для общественности: RequestFactory Wave

Он охватывает детали (хорошо появляющиеся детали) об API RequestFactory.

Основная идея заключается в том, что объекты вашей доменной модели необходимы на стороне сервера и на стороне клиента. Использование hibernate может вызвать проблемы с файлами классов, и люди имеют два набора объектов модели и используют пользовательский GWT-RPC для выполнения запросов к серверу и маршалирования / отмены маршала между объектами модели на стороне клиента и сервера. Не идеальное решение. Даже если вы можете использовать одни и те же объекты модели, накладные расходы на RPC являются перетаскиванием.

Введите RequestFactory, и мы видим, что инженерам Google, вероятно, платят по стоимости. Взгляните на пример кода, сгенерированного из .roo, в частности ApplicationRequestFactory.java.

package com.springsource.extrack.gwt.request;

import com.google.gwt.requestfactory.shared.RequestFactory;

public interface ApplicationRequestFactory extends RequestFactory {
    ReportRequest reportRequest();
    ExpenseRequest expenseRequest();
    EmployeeRequest employeeRequest();
}

Это интерфейс, который предоставляет методы запроса для каждого из объектов домена. Реализация этого класса не определена в проекте. Он создается в EntryPoint с помощью вызова GWT.create (...):

final ApplicationRequestFactory requestFactory = 
    GWT.create(ApplicationRequestFactory.class);
requestFactory.init(eventBus);

В пакете com.springsource.extrack.gwt.request вы увидите ApplicationEntityTypesProcessor.java, который ловко использует дженерики для упаковки ссылок на классы домена для использования позже в презентации. Остальная часть этого пакета - события и обработчики для каждого объекта модели.

В частности, есть четыре автоматически сгенерированных класса для каждого объекта:

  • EmployeeRecord.java - это DTO для объекта домена.
  • EmployeeRecordChanged.java - это событие RecordChanged, предоставляющее метод подключения onEmployeeChanged.
  • EmployeeChangedHandler.java - это интерфейс, который будет реализован, когда требуется определенное поведение для onEmployeeChanged.
  • EmployeeRequest.java - это интерфейс, используемый ApplicationRequestFactory для упаковки различных методов доступа для данного объекта.

Имейте в виду, что за кулисами генерируется много кода для поддержки всего этого. И от M1 до M2 многое было очищено от того, что видно в проекте GWT. Я ожидаю, что будет больше изменений, но не так радикально, как от M1 до M2.

Итак, наконец, эти события можно использовать как в пакете пользовательского интерфейса, чтобы связать домен и пользовательский интерфейс. ReportListActivity.java:

public void start(Display display) {
    this.registration = eventBus.addHandler(ReportRecordChanged.TYPE, new ReportChangedHandler() {
        public void onReportChanged(ReportRecordChanged event) {
            update(event.getWriteOperation(), event.getRecord());
        }
    });
    super.start(display);
}

Снова я отсылаю вас к волне за дополнительной информацией. Кроме того, в Cost.roo показано, как использовать Places, а также имеется довольно удобная платформа Activity. Счастливого GWTing.

Привет.

0 голосов
/ 20 июля 2010

Функциональность, на которую вы ссылаетесь, в настоящее время находится в стадии интенсивного развития (или так, ребята из Google хотят, чтобы мы поверили;)), поэтому API и внутренняя работа не являются окончательными и, скорее всего, все еще изменятся до окончательного выпуска GWT 2.1(это было заявлено несколько раз во время сеансов GWT во время Google IO 2010 ).Тем не менее, вы можете просмотреть образец Bikeshed в багажнике, чтобы увидеть рабочий (надеюсь;)) пример.Также есть ветка 2.1 , которая, кажется, содержит обновленный (?) Образец (и кулинарную книгу, которая была обещана в Google IO).
Лично я бы подождал с переключением вашего кодадо новой модели RPC, пока парни, работающие над GWT, не скажут, что это безопасно;) (но это определенно хорошая идея, чтобы привыкнуть к общей идее сейчас - не похоже, что они изменят все : D).

...