我几乎在网上搜索了几个小时,但我找不到答案。 问题是我想测试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);
}
答案 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'>