Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Guice:如何创建HttpSessionProvider_Java_Guice_Provider - Fatal编程技术网

Java Guice:如何创建HttpSessionProvider

Java Guice:如何创建HttpSessionProvider,java,guice,provider,Java,Guice,Provider,我在下面有一个模块,它被定义为Servlet的内部类 private static abstract class TestModule extends AbstractModule implements Provider<HttpSession> { @Override protected void configure( ) { bind(HttpSession.class).toProvider( TestModule.class ); }

我在下面有一个模块,它被定义为Servlet的内部类

private static abstract class TestModule extends AbstractModule 
implements Provider<HttpSession> {

    @Override 
    protected void configure( ) {
     bind(HttpSession.class).toProvider( TestModule.class );
    }
    @Override public abstract HttpSession get( );
}
我得到一个错误:

1) 没有绑定javax.servlet.http.HttpSession的实现


我做错了什么?

问题是您的配置如下:

bind(HttpSession.class).toProvider( TestModule.class );
但HttpSession的实际提供者是在创建注入器时创建的匿名内部类


要解决这个问题,只需使用Guice的ServletModule:

有解决方法吗?基本上,在doGet()或doPost()中创建注入器时,我需要创建提供者get()的实现。感谢您的评论。但是现在它会抱怨HttpServletRequest没有被绑定。@Mayumi,正如我在文章末尾所说的,如果您使用提供这些功能的ServletModule,则不会。实际上,我应该回到我说的,ServletModule还提供了一个
HttpSession
提供程序。
bind(HttpSession.class).toProvider( TestModule.class );