There is a Spring GWT Controller for standard GWT usage and also Spring Bayeux integration for using Comet on Jetty.
There is an ImageInterceptor that intercepts a request and looks in a directory that matches
the requests relative path. Currently it only matches one image extension type which defaults to '.jpg'. It generates
a thumbnail if one doesn't exist and also makes a list of available thumbnails and images.
Even though the service controller is annotation-based, since GWT calls RPC methods using reflection,
the mapping has to be manually set using the SimpleUrlHandlerMapping.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="org.springbyexample.web.gwt.server" />
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="order" value="0" />
<property name="mappings">
<value>
/person/service.do=serviceController
</value>
</property>
</bean>
</beans>
@Controller
public class ServiceController extends GwtController implements Service {
final Logger logger = LoggerFactory.getLogger(ServiceController.class);
private static final long serialVersionUID = -2103209407529882816L;
@Autowired
private PersonDao personDao = null;
/**
* Finds person within a range.
*/
public Person[] findPersons(int startIndex, int maxResults) {
Person[] results = null;
List<Person> lResults = new ArrayList<Person>();
Collection<org.springbyexample.orm.hibernate3.annotation.bean.Person> lPersons = personDao.findPersons(startIndex, maxResults);
for (org.springbyexample.orm.hibernate3.annotation.bean.Person person : lPersons) {
Person result = new Person();
result.setId(person.getId());
result.setFirstName(person.getFirstName());
result.setLastName(person.getLastName());
lResults.add(result);
}
return lResults.toArray(new Person[]{});
}
}