找不到GWT RPC服务

时间:2011-07-21 11:11:10

标签: gwt service rpc

我几乎在网上搜索了几个小时,但我找不到答案。 问题是我想测试gwt RPC。 所以我使用Eclipse插件生成一个GWT远程服务。 但每次我得到以下故障:“[WARN]找不到以下文件:/ kuss_projekt / SpeicherService”

我已经尝试了很多,但我不知道问题是什么。 那是我的代码:

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

2 个答案:

答案 0 :(得分:3)

您是否尝试从servlet映射中删除/kuss_projekt以使其成为:

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

GWT客户端期望通过@RemoteServiceRelativePath定义的URL提供该服务。在浏览器中运行时,路径将相对于模块基本URL进行解析。正如你所说:

@RemoteServiceRelativePath("SpeicherService")

客户端将通过连接

对URL进行请求
GWT.getModuleBaseURL() + "SpeicherService"

如果您的servlet未映射到此URL,则请求将失败。尝试在控制台上打印GWT.getModuleBaseURL()+ "SpeicherService"以查看测试用例中的基本网址。获得此功能后,打开浏览器并转到该URL。如果响应显示“不支持Get方法”,则所有内容都会正确映射。另一方面,如果你得到一个404,你必须修复你的servlet映射

答案 1 :(得分:2)

您的应用程序xml文件是否包含

<module rename-to='kuss_projekt'>