我正在使用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");
}
}