Я пытаюсь создать 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!Может кто-нибудь помочь мне?Спасибо!