Guice与DWR集成

阅读更多

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-invokerservlet-name>  
  8.     <display-name>DWR Servletdisplay-name>  
  9.     <description>Direct Web Remoter Servletdescription>  
  10.     <servlet-class>org.directwebremoting.guice.DwrGuiceServletservlet-class>  
  11.     <init-param>  
  12.         <param-name>debugparam-name>  
  13.         <param-value>trueparam-value>  
  14.     init-param>  
  15.     <init-param>  
  16.         <param-name>activeReverseAjaxEnabledparam-name>  
  17.         <param-value>trueparam-value>  
  18.     init-param>  
  19.     <load-on-startup>1load-on-startup>  
  20. servlet>  
  21.   
  22. <servlet-mapping>  
  23.     <servlet-name>dwr-invokerservlet-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目前可以以发布接口的方式来发布远程对象。

你可能感兴趣的:(DWR,Servlet,Web,配置管理,Google)