Начиная с GWT 2.4, интеграция API RequestFactory со службами Spring на внутреннем интерфейсе проста, все, что вам нужно сделать, это создать на вашем сервере специальный ServiceLocator, который будет использоваться GWT для правильного определения местоположения вызываемых служб:
1
2
3
4
5
6
7
8
|
public class SpringServiceLocator implements ServiceLocator { public Object getInstance(Class clazz) { ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext( RequestFactoryServlet.getThreadLocalServletContext()); return context.getBean(clazz); } } |
Второй шаг — объявить ваш сервлет RequestFactory в вашем web.xml следующим образом (я предполагаю, что вы уже настроили Spring):
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
< servlet > < servlet-name >requestFactoryServlet</ servlet-name > < servlet-class >org.gxpenses.util.SpringRequestServlet</ servlet-class > < load-on-startup >1</ load-on-startup > </ servlet > < servlet-mapping > < servlet-name >requestFactoryServlet</ servlet-name > < url-pattern >/gwtRequest</ url-pattern > </ servlet-mapping > |
Как обычно в GWT-части, вам необходимо настроить прокси-серверы (поскольку вы используете бэкэнд стиля службы, вы должны использовать ValueProxy вместо EntityProxy) и свои запросы, которые являются удаленными интерфейсами ваших служб:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
//Note that I inherit from the ValueProxy object @ProxyFor (Account. class ) public interface AccountProxy extends ValueProxy { public String getId(); public void setId(String id); public String getName(); public void setName(String name); public Double getBalance(); public void setBalance(Double balance); public String getType(); public void setType(String type); } //You have to provide you service Impl class, and the ServiceLocator you created //Note that Account is automatically to AccountProxy on the client @Service (value=AccountsServiceImpl. class , locator=SpringServiceLocator. class ) public interface AccountRequest extends RequestContext { abstract Request<Void> createNewAccount(AccountProxy account); abstract Request<Void> updateAccountBalance(String accountId, Double transactionAmount, String type); abstract Request<Double> totalAmountByAccountAndPeriodeAndType(String accountId, Date start, Date end, String type); } |
Вот и все для интеграции, для получения дополнительной информации о том, как использовать API RequestFactory см .: API RequestFactory
Ссылка: Spring GWT Integration с использованием API RequestFactory от нашего партнера по JCG Идрисса Мрабти в блоге Fancy UI .
Статьи по Теме :
- Учебник по GWT 2 Spring 3 JPA 2 Hibernate 3.5 — демонстрация Eclipse и Maven 2
- GWT 2 Spring 3 JPA 2 Hibernate 3.5 Учебник
- Создание собственного GWT Spring Maven Archetype
- Начальная загрузка веб-приложения с помощью Spring 3.1 и конфигурации на основе Java, часть 1
- GWT Spring и Hibernate входят в мир Data Grids
- Тестирование приложений GWT с Selenium или WebDriver
- GWT, GWT-Ext (SmartGWT), GXT (Ext GWT) Общие задачи
- Учебник по интеграции GWT EJB3 Maven JBoss 5.1
- Начало работы с SmartGWT для потрясающих интерфейсов GWT