PDA

View Full Version : Spring 3 + GWT 1.7



valery
Nov 27th, 2009, 04:51 AM
Hello,

I'm trying to integrate Spring into a Gwt application (using IntelliJ Idea) to use some beans or class located in the core package.
Here is the application's structure
http://www.monsterup.com/image.php?url=upload/1259317243629.png

I found an interresant way on http://code.google.com/p/spring4gwt/.
I followed the "simple rpc example" at this page : http://code.google.com/p/spring4gwt/wiki/SimpleRPCExample.

Thus i added spring libraries, gwt libraries and the spring4gwt.jar to my project and modify my files following the example.

WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">

<!-- Spring context -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListe ner</listener-class>
</listener>

<!-- SpringGwt remote service servlet -->
<servlet>
<servlet-name>springGwtRemoteServiceServlet</servlet-name>
<servlet-class>org.spring4gwt.server.SpringGwtRemoteServiceServle t</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springGwtRemoteServiceServlet</servlet-name>
<url-pattern>/springGwtServices/*</url-pattern>
</servlet-mapping>
</web-app>

ressources/applicationContext.xml

<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<context:component-scan base-package="biz.manex.chbah.crc.web.server" />


client/CRCService

@RemoteServiceRelativePath("springGwtServices/crcService")
public interface CRCService extends RemoteService {
String sayHello(String name);
}

client/CRCServiceAsync

public interface CRCServiceAsync {
void sayHello(String name, final AsyncCallback<String> async);
}

server/CRCServiceImpl

@Service("crcService")
public class CRCServiceImpl implements CRCService {
// @Resource
// private Patient myPatient;
public String sayHello(String name) {
return "Nom du parametre : " + name + ". Nom de la personne : " /*+ myPatient.getFirstName()*/;
}

CRC.gwt.xml

<module>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User'/>
<inherits name="com.google.gwt.i18n.I18N"/>
<inherits name="com.google.gwt.http.HTTP"/>
<!-- Inherit GXT -->
<inherits name='com.extjs.gxt.ui.GXT'/>

<!-- Specify the app entry point class. -->
<entry-point class='biz.manex.chbah.crc.web.client.CRC'/>

<!-- servlet -->
<!--<servlet path="/springGwtServices/greetingService" class="biz.manex.chbah.crc.web.server.CRCServiceImpl"/>-->
</module>

TestPanel.java (the panel who will call the rpc service

package biz.manex.chbah.crc.web.client.panels;

import biz.manex.chbah.crc.web.client.CRCService;
import biz.manex.chbah.crc.web.client.CRCServiceAsync;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.*;

/**
* Created by Manex
* User: valery.stroeder (valery.stroeder@manex.biz)
* Date: 12-nov.-2009
* Time: 17:07:56
*/

public class TestPanel extends LayoutContainer {
private VerticalPanel verticalPanel = new VerticalPanel();
private HorizontalPanel horizontalPanel = new HorizontalPanel();
private TextBox textBox = new TextBox();
private Button button = new Button("Add");
private Label label = new Label();
private AsyncCallback<String> callback;
private CRCServiceAsync serviceAsync;

@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
setLayout(new FlowLayout());

// assemble Add Stock panel
horizontalPanel.add(textBox);
horizontalPanel.add(button);

// create service asynchrone
serviceAsync = GWT.create(CRCService.class);

// ServiceDefTarget endpoint = (ServiceDefTarget) serviceAsync;
// endpoint.setServiceEntryPoint("service.do");

// callback defines what to do with the service's response
callback = new AsyncCallback<String>() {
public void onFailure(final Throwable throwable) {
System.out.println("failure");
textBox.setText("Erreur");
}

public void onSuccess(final String crcServices) {
textBox.setText("succes : "+crcServices);
}
};

// button's listener
button.addClickHandler(new ClickHandler() {
public void onClick(final ClickEvent clickEvent) {
serviceAsync.sayHello("val", callback);

}
});


// assemble main panel
verticalPanel.add(horizontalPanel);
verticalPanel.add(label);

// add the main panel to the HTML element with the id "stockList"
add(verticalPanel);

// move cursor focus to the text box
textBox.setFocus(true);
}

}


When I launch my application and then click on the button who call the rpc-service I have this error:


[WARN] Resource not found: springGwtServices/crcService; (could a file be missing from the public path or a <servlet> tag misconfigured in module biz.manex.chbah.crc.web.CRC.gwt.xml ?)

Can someone help me ?

Thanks.