论坛首页 Web前端技术论坛

Guice与DWR集成

浏览 2387 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-04-20  

Tim因为其实现了guice与dwr的集成,已经被列入dwr的contributor行列,Tim在自己的blog上也谈到了如何实现guice与dwr的集成,不过说的比较粗略。下面我们来看看如何实现guice与dwr的集成。

资源下载

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


定义服务

java 代码
 
  1. public interface HelloService {  
  2.     String sayHello(String name);  

java 代码
 
  1. public class DefaultHelloService implements HelloService {  
  2.     public String sayHello(String name) {  
  3.         return "Hello, " +name;  
  4.     }  
  5. }  


实现dwr的Listener

java 代码
  1. public class DwrContextListener extends DwrGuiceServletContextListener {    
  2.     @Override    
  3.     protected void configure() {    
  4.         // 在这里可以安装其他的guice模块    
  5.         // install(new TempModule());    
  6.         // 绑定服务    
  7.         bindRemotedAs("HelloService", HelloService.class).to(DefaultHelloService.class).in(Scopes.SINGLETON);    
  8.     }    
  9. }    


配置DWR

xml 代码
  1.        <listener>  
  2.     <listener-class>  
  3.     temp.DwrContextListener  
  4.         <!---->listener-class>  
  5. <!---->listener>  
  6. <servlet>  
  7.     <servlet-name>dwr-invoker<!---->servlet-name>  
  8.     <display-name>DWR Servlet<!---->display-name>  
  9.     <description>Direct Web Remoter Servlet<!---->description>  
  10.     <servlet-class>org.directwebremoting.guice.DwrGuiceServlet<!---->servlet-class>  
  11.     <init-param>  
  12.         <param-name>debug<!---->param-name>  
  13.         <param-value>true<!---->param-value>  
  14.     <!---->init-param>  
  15.     <init-param>  
  16.         <param-name>activeReverseAjaxEnabled<!---->param-name>  
  17.         <param-value>true<!---->param-value>  
  18.     <!---->init-param>  
  19.     <load-on-startup>1<!---->load-on-startup>  
  20. <!---->servlet>  
  21.   
  22. <servlet-mapping>  
  23.     <servlet-name>dwr-invoker<!---->servlet-name>  
  24.     <url-pattern>/dwr/*<!---->url-pattern>  
  25. <!---->servlet-mapping>  


至此,已经完成了guice与dwr的集成。启动web服务,在浏览器中输入:http://localhost:{port}/{context}/dwr,便可以看到所发布的HelloService服务。

重大改进

dwr在与guice集成之后有了突出的功能性改进,以往如果想要发布远程对象,需要使用具体类来实现,不可以使用接口,这使得发布的对象暴露过多的内部信息,虽然可以通过在dwr.xml中显示的定义哪些方法和属性需要发布,哪些不用,但是这样也加大了对发布的远程对象的维护和管理难度。借助guice,DWR 2.0RCa目前可以以发布接口的方式来发布远程对象。

论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics