2011-06-03 27 views
1

嗨,大家好我的問題。一個GWT項目,因爲我讀過的杜松子酒我只能在客戶端使用,而不是Guice在服務器端可用。這是我的問題。GWT Guice /杜松子酒在服務器端問題

讓我們先發布一些示例代碼。

服務器端。

public class WebchargeServiceImpl extends RemoteServiceServlet implements WebchargeService 
{ 
@Inject 
private Injector injector; 
@Inject 
private ExecuteOperations executeOperations; 

..... 
executeOperations.do(); .... 

這裏是注射類ExecuteOperations

@Singleton 
public class ExecuteOperations 
{ 
......... 
} 

我也有小服務程序模塊類

public class SampleWebGuiceServletConfig extends GuiceServletContextListener 
{ 
@Override 
protected Injector getInjector() 
{ 
    return Guice.createInjector(Stage.DEVELOPMENT, new SampleWebModule()); 
} 

} // class 

.....

public class SampleWebModule extends ServletModule 
{ 

    @Override 
    protected void configureServlets() 
    { 
     bind(WebchargeServiceImpl.class); //is it correct to bind a class like that? 
    } // class 

的web.xml

<servlet> 
     <servlet-name>.......WebchargeService</servlet-name> 
     <servlet-class>.....WebchargeServiceImpl</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>.........WebchargeService</servlet-name> 
     <url-pattern>/Webcharge/WebchargeService</url-pattern> 
    </servlet-mapping> 
    <filter> 
     <filter-name>guiceFilter</filter-name> 
     <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> 
     </filter> 
    <filter-mapping> 
     <filter-name>guiceFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

    <listener> 
     <listener-class>......SampleWebGuiceServletConfig</listener-class> 
    </listener> 
</web-app> 

我錯過了一些東西,因爲我每次都得到空,這段代碼在servlet/jsp環境中工作正常,但是這裏... 建議的地方。

謝謝。

+0

你在哪裏得到空? – MarcoS 2011-06-03 13:31:41

+0

在類WebchargeServiceImpl中,實例executeOperations爲空,我希望是init。你怎麼看 ? – brakebg 2011-06-03 13:34:00

回答

5

你必須映射你的WebchargeServiceImpl servlet在你的SampleWebModule,不是在你的web.xml;否則它將由你的servlet容器而不是由Guice構造,所以它不會被「注入」。

+0

謝謝托馬斯,但我做到了,但仍然executeOperations實例爲null。我已更新該帖子,WebchargeServiceImpl綁定在SampleWebModule中。還有什麼我錯過? – brakebg 2011-06-06 15:55:07

+1

讓我重申一下:您必須從ServletModule內映射您的servlet(不僅僅是*綁定類),而不要從您的web.xml中** **:serve(「/ Webcharge/WebchargeService「)。與(WebchargeServiceImpl.class)'。請參閱http://code.google.com/p/google-guice/wiki/ServletModule#The_Binding_Language – 2011-06-07 08:15:48

+0

現在可以運作:))謝謝 – brakebg 2011-06-07 08:19:52

1

您的servlet如何實例化?你安裝了Guice Servlet Filter嗎?

+0

是的,我已經在我的web.xml中聲明瞭GuiceFilter,但是..問題仍然是ipen。感謝彼得評論我的帖子。 – brakebg 2011-06-06 15:56:46

相關問題