未找到 GWT RPC 服务
Posted
技术标签:
【中文标题】未找到 GWT RPC 服务【英文标题】:GWT RPC Service not found 【发布时间】:2011-07-21 11:11:10 【问题描述】:我几乎在网上搜索了几个小时,但没有找到答案。 问题是我想测试 gwt RPC。 所以我用 Eclipse 插件生成了一个 GWT 远程服务。 但每次我得到以下失败:“[WARN] No file found for: /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);
【问题讨论】:
【参考方案1】:您是否尝试过从 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 是什么。获得此信息后,打开浏览器并转到该网址。如果响应显示“不支持获取方法”之类的内容,则所有内容都已正确映射。另一方面,如果您收到404
,则必须修复您的 servlet 映射
【讨论】:
感谢您的帮助。它是由插件自动构建的,所以我认为它必须是正确的。我尝试了请求并得到了 404 响应。所以我修复了我的 servlet 映射,现在已经找到了服务。但后来我得到以下异常: [错误] [kuss_projekt] 第 6 行:没有源代码可用于类型 com.google.gwt.user.server.rpc.RemoteServiceServlet;你忘了继承一个必需的模块吗?但是我有代码。怎么了?对不起,但我是新手,从来没有使用过 Servlet 和这个。 @ph09,接受答案并发布新问题。在 *** 中,答案和 cmets 应该专注于一个问题。 我仍然遇到以下问题:[WARN] No file found for: /kuss_projekt/SpeicherService 我过度扩展...【参考方案2】:您的应用程序 xml 文件是否包含
<module rename-to='kuss_projekt'>
【讨论】:
以上是关于未找到 GWT RPC 服务的主要内容,如果未能解决你的问题,请参考以下文章