2011-11-28 129 views
0

我遇到的问题与GWT:GWT延迟绑定的问题

异常堆栈的样子:

Caused by: java.lang.RuntimeException: Deferred binding failed for 'com.cme.reg.fltrs.common.service.AnnouncementService' (did you forget to inherit a required module?) 
    at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:53) 
    at com.google.gwt.core.client.GWT.create(GWT.java:98) 
    at com.cme.reg.fltrs.client.sharedui.utils.ServiceFactory.getAnnouncementService(ServiceFactory.java:117) 
    at com.cme.reg.fltrs.client.announcement.AddMaintainAnnouncementModel.saveAnnouncement(AddMaintainAnnouncementModel.java:36) 
    at com.cme.reg.fltrs.client.announcement.AddMaintainAnnouncementPanel.save(AddMaintainAnnouncementPanel.java:260) 
    at com.cme.reg.fltrs.client.announcement.AddMaintainAnnouncementPanel$6.onClick(AddMaintainAnnouncementPanel.java:168) 
    at com.cme.libs.gwt.client.widgets.events.CMEClickListener.onEvent(CMEClickListener.java:10) 
    at com.cme.libs.gwt.client.widgets.events.CMEListenerCollection.fireEvent(CMEListenerCollection.java:51) 
    at com.cme.libs.gwt.client.widgets.CMEButton$1.onClick(CMEButton.java:30) 
    at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:54) 
    at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:1) 
    at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1) 
    at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193) 
    at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88) 
    at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127) 

其未能在:announcementService = GWT.create(AnnouncementService.class); 注:

我有我的服务类:AnnouncementService @RemoteServiceRelativePath(“announcement.srvc”)已添加到AnnouncementService。

异步服务类:AnnouncementServiceAsync

Configurations.xml:

entry key="**/announcement.srvc" value-ref="announcementServiceServlet" 

任何帮助,在这里我做错了或缺少什么?

+0

当您删除星号**并将其保留为/announcement.srcv时会发生什么? – user710502

+0

我会尝试,但已添加其他工作服务,如**/reportx.srvc,所以像这样添加。 – Swagatika

+3

日志中必须存在一些更具体的错误(在该异常之前),以及为您的RPC服务生成客户端代码的确切问题。这可能是某些对象不可序列化或类似的东西。 –

回答

3

谢谢托马斯。要检查 几个事情:

1.服务必须有匹配ServiceAsync类 2.确保在服务中使用的所有类型,在一些地方落实IsSerializable

我错过了这两个条件。

0

如果您的RPC出现延迟绑定错误,那么除了检查是否有匹配的异步界面之外,还有一件事要检查,以确保您在以下3个地方有相同的方法

  1. 同步接口
  2. 异步接口
  3. 服务实现类

我当我在Async接口和实现类中缺少同步(常规)接口时意外地有一个额外的方法,但我的IDE(IntelliJ IDEA 12)没有将任何文件标记为有错误时,得到了类似的“延迟绑定”错误。当我终于记起最近从我的服务中删除了一个方法时,我进入Synchronous界面,看到我忘记从同步界面中删除该方法的签名。删除它以使所有三个文件中的签名匹配修复了延迟绑定错误。