2012-07-25 42 views
0

我有一個maven + spring + gwt項目,我想使用請求工廠。我無法弄清楚爲什麼我會得到這個例外。GWT的RequestFactory發射請求時出錯:org.springframework.beans.factory.NoSuchBeanDefinitionException

要求工廠:

public interface StarRequestFactory extends RequestFactory { 

@Service(value = RaduService.class, locator = GWTServiceLocator.class) 
public interface RaduRequestContext extends RequestContext { 
     Request<Void> save(); 
    } 

RaduRequestContext raduRequestcontext(); 
} 

服務:

public class RaduService { 

    public void save(){ 
    System.out.println("You have saved."); 
    } 

} 

定位:

public class GWTServiceLocator implements ServiceLocator, 
    ApplicationContextAware { 
    private ApplicationContext context; 

    @Override 
    public Object getInstance(Class<?> clazz) { 
    return context.getBean(clazz); 
    } 

    @Override 
    public void setApplicationContext(ApplicationContext context) 
     throws BeansException { 
    this.context = context; 
    } 

} 

在我的入口點類我發出請求:

requestFactory.raduRequestcontext().save().fire(new Receiver<Void>() { 

     @Override 
     public void onSuccess(Void response) { 
      System.out.println("Success"); 

     } 
    }); 

在這一請求,我得到以下錯誤:

[錯誤] IUL 25,2012下午3點35分36秒com.google.web.bindery.requestfactory.server.RequestFactoryServlet的doPost [錯誤]重度:意外錯誤 [錯誤] org.springframework.beans.factory.NoSuchBeanDefinitionException:沒有定義[com.base.star.shared.services.StarRequestFactory $ RaduRequestContext]類型的唯一bean:期望的單一bean,但找到0: [ERROR] at org.springframework.context.support.AbstractApplicationContext.getBean [AbstractApplicationContext.java:1083] [ERROR] at [org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:269) [ERROR] at com.base.star.server.integration.GWTServiceLocator.getInstance(GWTServiceLocator.java:25) [ERROR]在com.base.star.server.integration.GWTServiceLayerDecorator.createServiceInstance(GWTServiceLayerDecorator.java:43) [ERROR]在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) [ERROR]在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [ERROR]在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [錯誤]在java.lang.reflect.Method.invoke(Method.java:601) [ERROR]在com.google.web.bindery.requestfactory.server.ServiceLayerCache.getOrCache(ServiceLayerCache.java:233) [ERROR ]在com.google.web.bindery.requestfactory.server.ServiceLayerCache.createServiceInstance(ServiceLayerCache.java:117)在com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.processInvocationMessages(SimpleRequestProcessor.java:451) [ERROR] com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor。 java:225) [ERROR] at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:127) .................. ........................................

有誰知道這是什麼關於 ?

如果需要,我可以發佈pom。

回答

1

似乎是一個春天錯誤:

你有沒有註解你RaduService@Service或在你的applicationContext.xml文件作爲一個bean定義的呢?

+0

我已經在ApplicationContext.xml中將它定義爲: 2012-07-25 14:26:09

+0

調試你的服務cod並在你的GWTServiceLocator的''public Object getInstance(Class clazz)''中放置一個斷點,並檢查它試圖實例化的東西 – 2012-07-25 14:40:57

+0

它嘗試實例化:interface com .base.star.shared.services.StarRequestFactory $ RaduRequestContext。 – 2012-07-25 15:06:59