简体   繁体   English

Jersey2 中的 PerRequestTypeInjectableProvider 等价物

[英]PerRequestTypeInjectableProvider equivalent in Jersey2

What is the equivalent of PerRequestTypeInjectableProvider in Jersey2? Jersey2 中 PerRequestTypeInjectableProvider 的等价物是什么?

I've tries to use AbstractBinder but it doesn't seem to work.我尝试使用 AbstractBinder 但它似乎不起作用。 The Seesion I'm trying to inject is always null.我尝试注入的 Seesion 总是 null。

I tried to replace jersey-1 old code我试图替换 jersey-1 旧代码

public class UserSessionProvider extends PerRequestTypeInjectableProvider<Context, Session> {

  @Context HttpServletRequest request;

  public UserSessionProvider() {
    super(Session.class);
  }

  @Override
  public Injectable<Session> getInjectable(ComponentContext cc, Context context) {
    return new Injectable<Session>() {

      @Override
      public Session getValue() {
        Session session = SessionUtils.createSession(request);
        request.setAttribute(WebSessionConfig.s.servlet_attribute_name, session);
        return session;
      }
    };
  }
}

with jersey-2 new code, replacing PerRequestTypeInjectableProvider with AbstractBinder:使用 jersey-2 新代码,将 PerRequestTypeInjectableProvider 替换为 AbstractBinder:

public class UserSessionProvider extends AbstractBinder {

  private static final Logger logger = Logger.getLogger(UserSessionProvider.class);

  @Context HttpServletRequest request;

  @Override
  protected void configure() {
    bind(SessionResolver.class).to(Session.class);
  }

  public class SessionResolver implements InjectionResolver<Session> {

    @Override
    public Object resolve(Injectee injectee, ServiceHandle<?> root) {

      Session session = SessionUtils.createSession(request);
      request.setAttribute(WebSessionConfig.s.servlet_attribute_name, session);
      return session;
    }

    @Override
    public boolean isConstructorParameterIndicator() {
      return true;
    }

    @Override
    public boolean isMethodParameterIndicator() {
      return true;
    }
  }
}

The issue was that the package was not registered.问题是 package 没有注册。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM