Hello,
Can anyone please help me out on the below? I am new to GWT and I have been trying a lot to get a starter app running using GWT, Spring and hibernate.
I was able to set up basic app but now I want to use RequestFactory with Spring MVC. After searching a lot I came across few links to get started but I am not able to completely figure out how to get the configuration right, and my app is not working :( . 
Can anyone please suggest me where I can get a sample app with RequestFactory and SpringMVC configured so that I can get the settings right. Or help me to get my app running. 
I am using GWT 2.4 and spring 3.
My web.xml is : 
<web-app>
	<!-- Default page to serve -->
	<welcome-file-list>
		<welcome-file>SimpleRPC.html</welcome-file>
	</welcome-file-list>
	<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- Spring context -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!-- SpringGwt remote service servlet -->
	<servlet>
		<servlet-name>simpleRPC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>simpleRPC</servlet-name>
		<url-pattern>/gwtspring/*</url-pattern>
	</servlet-mapping>
	<servlet>
		<servlet-name>authServlet</servlet-name>
		<servlet-class>org.spring4gwt.examples.simplerpc.server.AuthServiceImpl</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>authServlet</servlet-name>
		<url-pattern>/gwtspring/auth</url-pattern>
	</servlet-mapping>
</web-app>
simpleRPC-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
	<bean id="urlMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<value>
				/gwtspring=gwtRequestFactoryController
			</value>
		</property>
	</bean>
	<bean id="gwtSpringServiceLayerDecorator"
		class="org.spring4gwt.examples.simplerpc.server.servlet.GWTSpringServiceLayerDecorator" />
	<bean id="defaultExceptionHandler"
		class="com.google.web.bindery.requestfactory.server.DefaultExceptionHandler" />
	<!-- RequestFactoryServlet bean is scoped as singleton. Injecting custom 
		SpringServiceLayerDecorator. -->
	<bean id="requestFactoryServlet"
		class="com.google.web.bindery.requestfactory.server.RequestFactoryServlet"
		scope="singleton">
		<constructor-arg ref="defaultExceptionHandler" />
		<constructor-arg ref="gwtSpringServiceLayerDecorator" />
	</bean>
	<bean id="gwtSpringEntityLocator"
		class="org.spring4gwt.examples.simplerpc.server.servlet.GWTSpringEntityLocator" />
	<bean id="gwtSpringServiceLocator"
		class="org.spring4gwt.examples.simplerpc.server.servlet.GWTSpringServiceLocator" />
	<!-- IMPORTANT NOTE: CustomServletWrappingController is a hacked version 
		of ServletWrappingController. The servlet class defined here will not be 
		used. Please see CustomServletWrappingController for more information. -->
	<bean id="gwtRequestFactoryController"
		class="org.spring4gwt.examples.simplerpc.server.servlet.CustomServletWrappingController">
		<property name="servletClass">
			<value>com.google.web.bindery.requestfactory.server.RequestFactoryServlet
			</value>
		</property>
		<property name="servletName">
			<value>gwtspring</value>
		</property>
	</bean>
</beans>
EmployeeRequest.java
@Service(locator = GWTSpringServiceLocator.class, value = EmployeeRequest.class)
public interface EmployeeRequest extends RequestContext {
	Request<EmployeeProxy> findEmployee(Long id);
	InstanceRequest<EmployeeProxy, Void> persist();
}
EmployeeProxy .java
@ProxyFor(value = EmployeeDTO.class, locator = GWTSpringEntityLocator.class)
public interface EmployeeProxy extends EntityProxy {
	String getEmployeeName();
	String getEmployeeSurname();
	Long getEmployeeId();
	String getJob();
	void setEmployeeName(String employeeName);
	void setEmployeeSurname(String employeeSurname);
	void setJob(String job);
	void setEmployeeId(long employeeId);
}
EmployeeDTO.java
@Entity
@Table(name = "EMPLOYEE")
public class EmployeeDTO implements java.io.Serializable {
    
    private static final long serialVersionUID = 7440297955003302414L;
    @Id
    @Column(name="employee_id")
    private long employeeId;
    
    @Column(name="employee_name", nullable = false, length=30)
    private String employeeName;
    
    @Column(name="employee_surname", nullable = false, length=30)
    private String employeeSurname;
    
    @Column(name="job", length=50)
    private String job;
        
    public EmployeeDTO() {
    }
    public EmployeeDTO(int employeeId) {
        this.employeeId = employeeId;        
    }
    public EmployeeDTO(long employeeId, String employeeName, String employeeSurname,
            String job) {
        this.employeeId = employeeId;
        this.employeeName = employeeName;
        this.employeeSurname = employeeSurname;
        this.job = job;
    }
    public long getEmployeeId() {
        return employeeId;
    }
    public void setEmployeeId(long employeeId) {
        this.employeeId = employeeId;
    }
    public String getEmployeeName() {
        return employeeName;
    }
    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }
    public String getEmployeeSurname() {
        return employeeSurname;
    }
    public void setEmployeeSurname(String employeeSurname) {
        this.employeeSurname = employeeSurname;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
}
EmployeeService.java
public interface EmployeeService {
    
    public EmployeeDTO findEmployee(long employeeId);
 
    public void persist(EmployeeDTO employeeDTO);
}
EmployeeServiceImpl.java
@Service("employeeService") 
public class EmployeeServiceImpl implements EmployeeService{ 
    
    @Autowired 
    private EmployeeDAO employeeDAO; 
    @PostConstruct 
    public void init() throws Exception { 
    } 
    
    @PreDestroy 
    public void destroy() { 
    } 
    public EmployeeDTO findEmployee(long employeeId) { 
        
        return employeeDAO.findById(employeeId); 
        
    } 
    
    @Transactional(propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
    public void persist(EmployeeDTO employeeDTO) {
    	if(employeeDTO == null) { 
            employeeDAO.persist(employeeDTO); 
        } 
      }
} 
In my onModuleLoad method where I have the event for a button click on the page I am doing this
 EmployeeRequest request = requestFactory.employeeRequest();
 EmployeeProxy newEmployee = request.create(EmployeeProxy.class);
 Request<Void> createReq = request.persist().using(newEmployee);
 requestFactory.employeeRequest().findEmployee(employeeId).fire(
        	    new Receiver<EmployeeProxy>() {
        	      @Override
        	      public void onSuccess(EmployeeProxy employee) {
        	    	  System.out.println(employee.getEmployeeId());
        	    	  dialogBox.setText("Remote Procedure Call");
        	            serverResponseLabel.removeStyleName("serverResponseLabelError");
        	            serverResponseLabel.setHTML("OK");
        	            dialogBox.center();
        	            closeButton.setFocus(true);
        	      }
        	    });
The call for persist using request does not do anything. And the call to findEmployee throws a null pointer exception.
The locators I am using are attached in the mail. 
Please help me resolve this.
Thanks & Regards,
Kishore