Ошибка определения CDI: WELD-001476: Перехватчик [класс] должен быть @Dependent

Я пробую APM MoSKito и пытаюсь развернуть встроенный веб-интерфейс, который будет сопоставлен с [context]/mui/* где будет показан интерфейс MoSKito.

Проблема в том, что я получаю следующую ошибку при развертывании приложения:

Ошибка определения CDI: WELD-001476: Перехватчик [класс net.anotheria.moskito.integration.cdi.CountInterceptor перехватывает @Count] должен быть @Dependent

Перехватчики объявлены в beans.xml:

<interceptors>
    <class>net.anotheria.moskito.integration.cdi.CountInterceptor</class>
    <class>net.anotheria.moskito.integration.cdi.CallInterceptor</class>
</interceptors>   

Но поскольку я не могу модифицировать репозитории Maven для этого APM, я не могу заставить эти классы использовать аннотацию @Dependent, поэтому я не очень понимаю проблему, я бы очень признателен за некоторую помощь. Спасибо!


person esteban rincon    schedule 17.11.2016    source источник
comment
Пожалуйста, используйте лучшие теги в следующий раз. Я перепометил (полностью!!!) ваш вопрос   -  person Kukeltje    schedule 17.11.2016
comment
Я пока не вижу проблемы, просто хотел добавить, что с точки зрения Moskito все выглядит хорошо. Классы-перехватчики на самом деле оба @Dependent (по умолчанию CDI добавляет эту аннотацию, если вы не выбрали другую). Вы сами делаете что-то особенное с этими перехватчиками? Нравится строить что-то поверх них?   -  person Siliarus    schedule 21.11.2016
comment
@Siliarus, на самом деле я не следовал пошаговому руководству в документации MosKito.   -  person esteban rincon    schedule 21.11.2016
comment
Следовали этому руководству: moskito.org/integration.html#section-cdi.   -  person esteban rincon    schedule 21.11.2016
comment
Хорошо, это может объяснить это :) Я полагаю, вы использовали те же зависимости, что и у них, например. Москито 2.4.0/2.5.0? При проверке кода в этом выпуске их перехватчики помечены как @Singleton, что действительно неверно, и, вероятно, поэтому Weld кричит на вас. Кажется, это было исправлено в версии 2.7.0+. Попробуйте обновить и скажите, поможет ли это.   -  person Siliarus    schedule 21.11.2016
comment
@Силиарус, получилось! Благодарность! мне пришлось изменить перехватчик beans.xml на net.anotheria.moskito.integration.cdi.count.CountInterceptor и класс монитора, но теперь он работает. :)   -  person esteban rincon    schedule 21.11.2016
comment
Рад это слышать, позвольте мне сказать это как ответ, чтобы мы могли закрыть этот вопрос.   -  person Siliarus    schedule 21.11.2016


Ответы (1)


Проблема в том, что MoSKito в версиях ниже 2.7.0 имеет аннотацию @Singleton на своих перехватчиках. Это не проходит проверку Weld (перехватчики должны быть @Dependent bean-компонентами) и вызывает описанное исключение.

Поэтому решение состоит в том, чтобы обновить фреймворк до 2.7.0+. В результате этого требуется обновление до beans.xml, так как имена пакетов перехватчиков также изменились.

person Siliarus    schedule 21.11.2016