GWT RPC Service not found

淺唱寂寞╮ 提交于 2019-12-08 03:39:55

问题


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);
}

回答1:


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




回答2:


Does your application xml file contain

<module rename-to='kuss_projekt'>


来源:https://stackoverflow.com/questions/6775106/gwt-rpc-service-not-found

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!