2011-11-28 96 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界面,看到我忘記從同步界面中刪除該方法的簽名。刪除它以使所有三個文件中的簽名匹配修復了延遲綁定錯誤。