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{}
Другие вопросы по тегам