0

私たちはここで新進気鋭のプロジェクトのテクノロジーを検討しており、依存性注入フレームワークとして 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); 

}

この問題を解決できた人はいますか?もしそうなら、どうやって解決しましたか?

乾杯

フィル

4

3 に答える 3

2

HttpServletを拡張し、カプセル化されたHessianServletにメソッド呼び出しを委任するカスタムHessianHttpServletを作成します。このようにして、Guiceのサーブ呼び出しが満たされ、HessianServletの動作を使用することになります。

于 2010-08-30T02:16:30.910 に答える
0

いくつかの作業が必要ですが、基本的にはこれで問題を解決しました (構文に感謝します!):

@Singleton
public class AuthenticationWrapperServlet extends HttpServlet {

    private static final Logger LOG = Logger.getLogger(HessianDelegateServlet.class);

    // this is the HessianServlet
    private AuthenticationServlet authenticationServlet;

    @Override
    public void init(ServletConfig config) throws ServletException {
        LOG.trace("init() in");
        try {
            if (authenticationServlet == null) {
                authenticationServlet = new AuthenticationServlet();
            }
            authenticationServlet.init(config);
        } catch (Throwable t) {
            LOG.error("Error initialising hessian servlet", t);
            throw new ServletException(t);
        }
        LOG.trace("init() out");
    }

    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {

        try {
            authenticationServlet.service(request, response);
        } catch (Throwable t) {
            LOG.error("Error calling service()", t);
            throw new ServletException(t);
        }

    }
}
于 2010-09-03T02:34:18.890 に答える