获取java.lang.IllegalStateException:在ContainerRequestFilter中找不到线程绑定的实体管理器

时间:2019-04-11 11:53:59

标签: java filter dropwizard

我正在使用dropwizard。我创建了一个用于验证用户身份的过滤器。在代码sessionRepository中,这是与数据库中的会话表进行所有对话的代码。在资源内部使用时,该函数工作正常,但与ContainerRequestFilter一起使用时,该函数将失败。给出错误:

  

java.lang.IllegalStateException:没有线程绑定的实体管理器。

@Slf4j
@javax.ws.rs.ext.Provider
@Authenticate
public class TestFilter implements ContainerRequestFilter {

  public static final String USER_ID = "X_USER_ID";

  @Context
  private ResourceInfo resourceInfo;

  private Provider<SessionRepository> sessionRepository;

  private Provider<DeviceRepository> deviceProvider;

  @Inject
  public TestFilter(Provider<SessionRepository> sessionRepository,
      Provider<DeviceRepository> deviceProvider) {
    this.sessionRepository = sessionRepository;
    this.deviceProvider = deviceProvider;
  }

  @Override
  public void filter(ContainerRequestContext request) {
    Optional<Session> session = sessionRepository.get().getActiveSessionBySessionId("sample-session");
    log.info("Inside filter");
  }
}

0 个答案:

没有答案