Guice與DWR整合

梧桐雨—168發表於2008-03-26

更多相關推薦 Tim因為其實現了guice與dwr的整合,已經被列入dwr的contributor行列,Tim在自己的blog上也談到了如何實現guice與dwr的整合,不過說的比較粗略。下面我們來看看如何實現guice與dwr的整合。

資源下載


下載最新的DWR 2.0 RC4a,地址:https://dwr.dev.java.net/files/documents/2427/55209/dwr.jar
下載Guice 1.0,地址:http://google-guice.googlecode.com/files/guice-1.0.zip


定義服務

java 程式碼
 
public interface HelloService {  
    String sayHello(String name);  


java 程式碼
 
public class DefaultHelloService implements HelloService {  
    public String sayHello(String name) {  
        return "Hello, " +name;  
    }  
}  

實現dwr的Listener
java 程式碼
public class DwrContextListener extends DwrGuiceServletContextListener {    
    @Override    
    protected void configure() {    
        // 在這裡可以安裝其他的guice模組    
        // install(new TempModule());    
        // 繫結服務    
        bindRemotedAs("HelloService", HelloService.class).to(DefaultHelloService.class).in(Scopes.SINGLETON);    
    }    
}    

配置DWR


xml 程式碼
         
      
    temp.DwrContextListener  
        listener-class>  
listener>  
  
    dwr-invokerservlet-name>  
    DWR Servletdisplay-name>  
    Direct Web Remoter Servletdescription>  
    org.directwebremoting.guice.DwrGuiceServletservlet-class>  
      
        debugparam-name>  
        trueparam-value>  
    init-param>  
      
        activeReverseAjaxEnabledparam-name>  
        trueparam-value>  
    init-param>  
    1load-on-startup>  
servlet>  
  
  
    dwr-invokerservlet-name>  
    /dwr/*url-pattern>  
servlet-mapping>  

至此,已經完成了guice與dwr的整合。啟動web服務,在瀏覽器中輸入:http://localhost:{port}/{context}/dwr,便可以看到所釋出的HelloService服務。

重大改進

dwr在與guice整合之後有了突出的功能性改進,以往如果想要釋出遠端物件,需要使用具體類來實現,不可以使用介面,這使得釋出的物件暴露過多的內部資訊,雖然可以通過在dwr.xml中顯示的定義哪些方法和屬性需要釋出,哪些不用,但是這樣也加大了對釋出的遠端物件的維護和管理難度。藉助guice,DWR 2.0RCa目前可以以釋出介面的方式來發布遠端物件。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-217884/,如需轉載,請註明出處,否則將追究法律責任。

相關文章