Вы сталкиваетесь с тем фактом, что на Джерси есть своя собственная система внедрения зависимостей, в данном случае HK2, но для того, чтобы быть Java EE-совместимой, она также должна иметь возможность работать в более крупной среде, где CDI (Weld ) - система внедрения зависимостей. В вашем случае вы сейчас пытаетесь запустить вашу программу в такой среде (Glassfi sh).
Так что, хотя 1004 * правила инъекции * Джерси верны, и вы их выполнили, это не обязательно правила инъекции CDI. Вы не подчинились им.
В этом случае CDI не знает, как «сделать» @QueryParam("urlCode") String urlCode
, и не должен этого делать. Кроме того, CDI не видит ни одного конструктора, помеченного @Inject
, параметры которого являются вещами, которые он может «сделать», и, наконец, CDI не видит его последний возможный запасной вариант, конструктор с нулевым аргументом .
Когда вы добавляете конструктор с нулевым аргументом, CDI доволен и знает, как создавать экземпляры класса TempEP
и управлять им.
Если вы внимательно прочитаете трассировку стека, вы увидите, где HK2 "уходит" «ответственность за внедрение в CDI - и где CDI обнаруживает, что не знает, как« создать »экземпляр TempEP
.