`
非飞
  • 浏览: 80311 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Guice与DWR集成

    博客分类:
  • Java
阅读更多

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目前可以以发布接口的方式来发布远程对象。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics