Инъекция зависимостей JAX-RS на Джерси - PullRequest
1 голос
/ 01 мая 2019

Я пытаюсь создать REST API, используя JAX-RS, в частности, реализацию на Джерси.Я пытался реализовать аутентификацию, как в этом вопросе StackOverflow .

В основном я использую ContainerRequestFilter для фильтрации HTTP-запросов на основе заголовка авторизации.Этот класс определяет свойство, аннотированное атрибутом @Inject (я использую Kotlin, а не Java):

@Inject
var authenticationService: IAuthenticationService? = null

Я зарегистрировал эту службу аутентификации в своем AbstractBinder:

class MyApplicationBinder : AbstractBinder() {
    override fun configure() {
        bind(AuthenticationService::class.java) to IAuthenticationService::class.java
    }
}

и регистрация привязки этого приложения к моему ResourceConfig:

class MyResourceConfig : ResourceConfig() {
    init {
        // ...
        register(MyApplicationBinder())
    }
}

Однако я получаю исключение времени выполнения при запуске:

org.glassfish.hk2.api.UnsatisfiedDependencyException:
    There was no object available for injection at SystemInjecteeImpl(
        requiredType=IAuthenticationService,
        parent=AuthenticationRequestFilter,
        qualifiers={},
        position=-1,
        optional=false,
        self=false,
        unqualified=null,
        452444366
    )

Я понятия не имею, почему регистрацияв моем AbstractBinder игнорируется контейнером HK2!Может кто-нибудь помочь мне?Спасибо!

...