Java 如何将Hessian与Guice集成?

Java 如何将Hessian与Guice集成?,java,guice,hessian,Java,Guice,Hessian,我们正在研究一个即将到来的项目的技术,我真的想使用Guice作为我们的依赖注入框架,我还想使用Hessian进行客户机/服务器通信,但它似乎与Guice不兼容 public class WebMobule extends ServletModule { @Override protected void configureServlets() { serve("/fileupload").with(FileUploadServlet.class); // this doesn

我们正在研究一个即将到来的项目的技术,我真的想使用Guice作为我们的依赖注入框架,我还想使用Hessian进行客户机/服务器通信,但它似乎与Guice不兼容

public class WebMobule extends ServletModule {

@Override
protected void configureServlets() {

    serve("/fileupload").with(FileUploadServlet.class);

    // this doesn't work! AuthenticationServlet extends HessianServlet
    // HessianServlet extends GenericServlet - Guice wants something that extends
    // HttpServlet
    serve("/authentication").with(AuthenticationServlet.class); 

}
有人设法解决了这个问题吗?如果有,你是怎么解决的

干杯


Phil

我将编写一个定制的HessianHttpServlet,它扩展了HttpServlet并将方法调用委托给封装的HessianServlet。通过这种方式,Guice serve调用将得到满足,您将使用HessianServlet行为。

这需要一些工作,但我基本上解决了这个问题(感谢语法!):


我创建了一个小的开源项目,可以轻松集成hessian和guice。您可以使用以下基于注释的配置: 网络服务:

@HessianWebService
public class UserServiceImpl implements UserService {
    ...
}
GUI配置:

public class WebServiceGuiceServletContextListener extends GuiceServletContextListener {
    @Override
    protected Injector getInjector() {
        return Guice.createInjector(
                /* your guice modules */
                new HessianWebServicesModule("your web service implementations package")
        );
    }
}
或使用EDSL的手动方式:

public class WebServiceGuiceServletContextListener extends GuiceServletContextListener {
    @Override
    protected Injector getInjector() {
        return Guice.createInjector(
                /* your guice modules */
                new HessianWebServicesModule(){
                    @Override
                    protected void configureHessianWebServices() {
                        serveHessianWebService(UserService.class).usingUrl("/Users");
                    }
                }
        );
    }
}
此处提供了更多信息、配置选项和完整示例:

public class WebServiceGuiceServletContextListener extends GuiceServletContextListener {
    @Override
    protected Injector getInjector() {
        return Guice.createInjector(
                /* your guice modules */
                new HessianWebServicesModule(){
                    @Override
                    protected void configureHessianWebServices() {
                        serveHessianWebService(UserService.class).usingUrl("/Users");
                    }
                }
        );
    }
}