Gwt 供应商<;HttpSession>;没有注射

Gwt 供应商<;HttpSession>;没有注射,gwt,guice,gwt-dispatch,Gwt,Guice,Gwt Dispatch,我使用gwt调度从服务器到客户端进行通信并获取数据 为了获取特定于用户的数据,我希望将用户对象存储在httpsession中,并从servlet上下文访问特定于应用程序的数据 但是,当我注入提供程序时,当调用处理程序execute但调用dispatchservlet时,提供程序为null,即它不会被注入 下面是我的操作处理程序中的代码 @Inject Provider<HttpSession> provider; public ReadEntityHandler() { }

我使用gwt调度从服务器到客户端进行通信并获取数据

为了获取特定于用户的数据,我希望将用户对象存储在httpsession中,并从servlet上下文访问特定于应用程序的数据

但是,当我注入
提供程序
时,当调用处理程序execute但调用dispatchservlet时,提供程序为null,即它不会被注入

下面是我的操作处理程序中的代码

@Inject
Provider<HttpSession>   provider;

public ReadEntityHandler() {

} 

@Override
public EntityResult execute(ReadEntityAction arg0, ExecutionContext arg1) throws DispatchException {
    HttpSession session = null;
    if (provider == null)
        System.out.println("httpSession is null..");
    else {
        session = provider.get();
        System.out.println("httpSession not null..");
    }
    System.out.println("reached execution");
    return null;
}
@Inject
提供者;
公共ReadEntityHandler(){
} 
@凌驾
public EntityResult execute(ReadEntityAction arg0,ExecutionContext arg1)引发DispatchException{
HttpSession=null;
if(提供程序==null)
System.out.println(“httpSession为空…”);
否则{
session=provider.get();
System.out.println(“httpSession not null..”;
}
System.out.println(“达成执行”);
返回null;
}
还有我的调度servlet

@Singleton
public class ActionDispatchServlet extends RemoteServiceServlet implements StandardDispatchService {

    private Dispatch    dispatch;

            private Dispatch    dispatch;
@Inject ReadEntityHandler readEntityHandler;

public ActionDispatchServlet() {
    InstanceActionHandlerRegistry registry = new DefaultActionHandlerRegistry();
    registry.addHandler(readEntityHandler);
    dispatch = new SimpleDispatch(registry);
}


    @Override
    public Result execute(Action<?> action) throws DispatchException {
        try {
            return dispatch.execute(action);
        }
        catch (RuntimeException e) {
            log("Exception while executing " + action.getClass().getName() + ": " + e.getMessage(), e);
            throw e;
        }
    }
}
@Singleton
公共类ActionDispatchServlet扩展RemoteServiceServlet实现StandardDispatchService{
私人派遣;
私人派遣;
@注入ReadEntityHandler ReadEntityHandler;
public ActionDispatchServlet(){
InstanceActionHandlerRegistry=new DefaultActionHandlerRegistry();
addHandler(readEntityHandler);
dispatch=新的SimpleDispatch(注册表);
}
@凌驾
公共结果执行(操作操作)引发DispatchException{
试一试{
返回分派。执行(操作);
}
捕获(运行时异常e){
日志(“执行“+action.getClass().getName()+”:“+e.getMessage(),e”时发生异常);
投掷e;
}
}
}
当我尝试注入ReadEntityHandler时,它抛出以下异常

[WARN] failed guiceFilter
com.google.inject.ProvisionException: Guice provision errors:

1) Error injecting constructor, java.lang.NullPointerException
  at com.ensarm.wikirealty.server.service.ActionDispatchServlet.<init>(ActionDispatchServlet.java:22)
  at com.ensarm.wikirealty.server.service.ActionDispatchServlet.class(ActionDispatchServlet.java:22)
  while locating com.ensarm.wikirealty.server.service.ActionDispatchServlet

1 error
    at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:834)
    at  com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:856)
    at  com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:74)
    at com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:84)
    at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:106)
    at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:168)
    at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:593)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
    at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:222)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672)
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
    at com.google.gwt.dev.DevMode.main(DevMode.java:311)
Caused by: java.lang.NullPointerException
    at net.customware.gwt.dispatch.server.DefaultActionHandlerRegistry.addHandler(DefaultActionHandlerRegistry.java:21)
    at com.ensarm.wikirealty.server.service.ActionDispatchServlet.<init>(ActionDispatchServlet.java:24)
    at com.ensarm.wikirealty.server.service.ActionDispatchServlet$$FastClassByGuice$$e0a28a5d.newInstance(<generated>)
    at com.google.inject.internal.cglib.reflect.FastConstructor.newInstance(FastConstructor.java:40)
    at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:58)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:200)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:43)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:878)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    at com.google.inject.Scopes$1$1.get(Scopes.java:64)
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:825)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:871)
    at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:821)
    ... 25 more
[WARN]guiceFilter失败
com.google.inject.ProvisionException:Guice设置错误:
1) 注入构造函数java.lang.NullPointerException时出错
位于com.ensarm.wikirealty.server.service.ActionDispatchServlet。(ActionDispatchServlet.java:22)
位于com.ensarm.wikirealty.server.service.ActionDispatchServlet.class(ActionDispatchServlet.java:22)
查找com.ensarm.wikirealty.server.service.ActionDispatchServlet时
1错误
位于com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:834)
位于com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:856)
位于com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:74)
位于com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:84)
位于com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:106)
位于com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:168)
位于org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
位于org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:593)
位于org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
位于org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
位于org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)
位于org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
在com.google.gwt.dev.shell.jetty.jettylancher$WebAppContextWithReload.doStart(jettylancher.java:468)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
位于org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
位于org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
位于org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
位于org.mortbay.jetty.Server.doStart(Server.java:222)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
在com.google.gwt.dev.shell.jetty.jettylancher.start(jettylancher.java:672)
位于com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)
位于com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)
位于com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
位于com.google.gwt.dev.DevMode.main(DevMode.java:311)
原因:java.lang.NullPointerException
位于net.customware.gwt.dispatch.server.DefaultActionHandlerRegistry.addHandler(DefaultActionHandlerRegistry.java:21)
位于com.ensarm.wikirealty.server.service.ActionDispatchServlet。(ActionDispatchServlet.java:24)
在com.ensarm.wikirealty.server.service.ActionDispatchServlet$$FastClassByGuice$$e0a28a5d.newInstance()上
位于com.google.inject.internal.cglib.reflect.FastConstructor.newInstance(FastConstructor.java:40)
位于com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:58)
位于com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
在com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:200)上
在com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:43)
位于com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:878)
位于com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
位于com.google.inject.Scopes$1$1.get(Scopes.java:64)
位于com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
在com.google.inject.internal.InjectorImpl$4$1.call上(InjectorImpl.java:825)
位于com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:871)
位于com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:821)
... 25多
是否有可能DefaultActionHandlerRegistry在第21行有一个bug,并且错误正在那里发生?我不知道
Caused by: java.lang.NullPointerException
    at net.customware.gwt.dispatch.server.DefaultActionHandlerRegistry.addHandler(DefaultActionHandlerRegistry.java:21)
@Inject
public ActionDispatchServlet(ReadEntityHandler handler) {
        InstanceActionHandlerRegistry registry = new DefaultActionHandlerRegistry();
        registry.addHandler(handler);
        dispatch = new SimpleDispatch(registry);
    }