GWT RCP ServiceEntryPointSpecifiedException

Posted

技术标签:

【中文标题】GWT RCP ServiceEntryPointSpecifiedException【英文标题】: 【发布时间】:2011-07-21 16:24:02 【问题描述】:

对不起,我是这个主题的新手,但是当我想进行 rpc 调用时,我总是得到这个异常:

原因:com.google.gwt.user.client.rpc.ServiceDefTarget$NoServiceEntryPointSpecifiedException:未指定服务实现 URL

我不知道为什么,因为我已经把它变成了 gwt 教程。

这是我的源代码:

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>/SpeicherService</url-pattern>
</servlet-mapping>

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

</web-app>

-

Kuss_Projekt.gwt.xml:
<module rename-to='kuss_projekt'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' />

<!-- Inherit the default GWT style sheet. You can change -->
<!-- the theme of your GWT application by uncommenting -->
<!-- any one of the following lines. -->
<inherits name='com.google.gwt.user.theme.clean.Clean' />
<!--<inherits name='com.google.gwt.user.theme.standard.Standard'/> -->
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!--<inherits name='com.google.gwt.user.theme.dark.Dark'/> -->

<!-- Other module inherits -->

<!-- Specify the app entry point class. -->
<entry-point class='de.fhdo.kuss.client.Kuss_Projekt' />

<!-- Specify the paths for translatable code -->
<source path='client' />
<source path='shared' />

 </module>

-

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

【问题讨论】:

好的,我遇到了问题,我将其注释掉:@RemoteServiceRelativePath("SpeicherService") 但现在我收到此错误:[WARN] No file found for: /kuss_projekt/SpeicherService 【参考方案1】:

重新添加:

@RemoteServiceRelativePath("SpeicherService") 

然后在你的 web.xml 中替换

<url-pattern>/SpeicherService</url-pattern>

<url-pattern>/kuss_projekt/SpeicherService</url-pattern>

您需要这样做的原因是因为您在 gwt.xml 中使用:&lt;module rename-to='kuss_projekt'&gt;

【讨论】:

以上是关于GWT RCP ServiceEntryPointSpecifiedException的主要内容,如果未能解决你的问题,请参考以下文章

GWT RCP - 序列化异常

从数据库获取数据时 RCP 方法中的 GWT ClassCastException

mongo源码学习服务入口点ServiceEntryPoint

使用rcp命令实现从远程机器拷贝文件

eclipseeclipse_rcp工程发布前eclipse_rcp工程发布后

linux常用命令:rcp 命令