CDI и веб-фрагменты: не работают без beans.xml
У меня есть три проекта Maven:
- ядро (packagetype=JAR) с помощью src / main / resources / beans.xml bean-discovery-mode = "annotated"
- webfragment (packagetype=JAR) с помощью src / main / resources / beans.xml bean-discovery-mode = "annotated"
- webproject (packagetype = WAR) с помощью src / main / webapp / WEB-INF/beans.xml bean-discovery-mode = "annotated"
У меня есть org.jboss.weld.servlet:weld-servlet 2.2.9.Final (CDI 1.2) в моем классе и я использую tomcat 7.0.55. Кроме того, я использую Servlet 3, Deltaspike 1.2.1, Mojarra 2.2.10.
Все мои bean- компоненты CDI имеют аннотацию, определяющую bean-компонент (см. Значение режима обнаружения bean-компонентов, аннотированное в CDI 1.1)
Weld предупреждает меня о
servletWeldServlet [WARN] WELD-ENV-001004: Найдены как WEB-INF/beans.xml, так и WEB-INF/classes/META-INF/beans.xml. Это не переносимо, чтобы использовать оба местоположения одновременно. Weld собирается использовать jndi:/localhost/webproject/WEB-INF/beans.xml.
но все работает отлично.
Итак, я удалил все beans.xml, потому что они мне не нужны с CDI 1.2, но после этого уже ничего не работает: WELD-001408: Неудовлетворенные зависимости...
Что я упустил? Это проблема веб-фрагмента?
1 ответ
Неудовлетворенные зависимости в точке внедрения [BackedAnnotatedMethod] или что-то подобное
Показывает, в какой точке внедрения разрешение не удалось, проверьте, аннотирован ли тип введенного поля.
То есть:
@Inject
private SomeService injectedService;
Затем CDI1.2 предписывает, что если не определен beans.xml, он будет сканировать только аннотированные bean-компоненты.
следовательно
@SessionScoped or
{@ApplicationScoped, @Dependent, @RequestScoped, @ConversationScoped}
public class SomeService{}