ph09
ph09

Reputation: 1052

GWT RPC Service not found

I have searched the Web almost for hours, but I didn't find an answer. The Problem is that i want to the test the gwt RPC. So I generate with the Eclipse Plugin a GWT remote Service. But everytime I get the following Failure: "[WARN] No file found for: /kuss_projekt/SpeicherService"

I have tryed a lot, but I dont knwo what is the Problem. Thats my Code:

web.xml:
<web-app>

<servlet>
    <servlet-name>SpeicherService</servlet-name>
    <servlet-class>de.fhdo.kuss.server.SpeicherServiceImpl</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>SpeicherService</servlet-name>
    <url-pattern>/kuss_projekt/SpeicherService</url-pattern>
</servlet-mapping>

<!-- Default page to serve -->
<welcome-file-list>
    <welcome-file>Kuss_Projekt.html</welcome-file>
</welcome-file-list>


</web-app>

-

Speicherservice:
@RemoteServiceRelativePath("SpeicherService")
public interface SpeicherService extends RemoteService {

String getName(String name);


public static class Util {
    private static SpeicherServiceAsync instance;
    public static SpeicherServiceAsync getInstance(){
        if (instance == null) {
            instance = GWT.create(SpeicherService.class);
        }
        return instance;
    }
}
}

-

SpeicherServiceAsync:
public interface SpeicherServiceAsync {

void getName(String name, AsyncCallback<String> callback);

}

-

SpeicherServiceImpl
public class SpeicherServiceImpl extends RemoteServiceServlet implements SpeicherService {

@Override
public String getName(String name) {
    return("Server meldet sich " + name);
}
}

-

Test():
    public void test() {
    AsyncCallback<String> callback = new AsyncCallback<String>() {

        @Override
        public void onFailure(Throwable caught) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onSuccess(String result) {
            Window.alert(result);
        }
    };

    SpeicherService.Util.getInstance().getName("test",callback);
}

Upvotes: 1

Views: 5340

Answers (2)

maneesh
maneesh

Reputation: 1701

Does your application xml file contain

<module rename-to='kuss_projekt'>

Upvotes: 2

Tahir Akhtar
Tahir Akhtar

Reputation: 11635

Have you tried removing /kuss_projekt from servlet mapping to make it:

<servlet-mapping>
    <servlet-name>SpeicherService</servlet-name>
    <url-pattern>/SpeicherService</url-pattern>
</servlet-mapping>

GWT client is expecting the service to be available at the URL defined via @RemoteServiceRelativePath. When you are running in browser, the path is resolved relative to your module base url. As you have given:

@RemoteServiceRelativePath("SpeicherService")

the client will make request to the URL made by concatenating

GWT.getModuleBaseURL() + "SpeicherService"

If your servlet is not mapped at this url, the request will fail. Try printing GWT.getModuleBaseURL()+ "SpeicherService" on console to see what is the base url in your test case. Once you have got this, open the browser and go to that url. If the response says something like "Get method is not supported" everything is mapped correctly. On the other hand if you get a 404 you got to fix your servlet mapping

Upvotes: 3

Related Questions