2015-03-31 6 views
0

У меня есть три Maven проекта:CDI и веб-фрагменты: не работает без beans.xml

  • ядро ​​ (packagetype = JAR) с SRC/главная/ресурсы/beans.xml боб-discovery- режим = "примечание"
  • webfragment (packagetype = JAR) с SRC/основными/ресурсы/beans.xml бобом открытие режима = "примечание"
  • WebProject (packagetype = WAR) с SRC/Основной/WebApp/WEB-INF/beans.xml боба открытие режима = "аннотированный"

Я org.jboss.weld.servlet: приварной сервлета 2.2.9.Final (CDI 1.2) в моем пути к классам и используйте tomcat 7.0.55. Кроме того, я использую Servlet 3, Deltaspike 1.2.1, Mojarra 2.2.10.

Все моих CDI бобы имеют фасоль определения аннотаций (см Meaning of bean discovery mode annotated in 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

Unsatisified зависимости в точке инъекции [BackedAnnotatedMethod] или что-то подобное

Показывает, в котором литьевой точке разрешение не удалось, проверьте, если тип введенного поля примеч.

То есть:

@Inject 
private SomeService injectedService; 

Тогда CDI1.2 предписывает, что если не beans.xml не определен, он будет проверять только аннотированные бобы.

Следовательно

@SessionScoped or 
{@ApplicationScoped, @Dependent, @RequestScoped, @ConversationScoped} 
public class SomeService{} 
+0

Да, я знаю. И я импортирую их все из _javax.enterprise. * _. Это похоже на то, что CDI игнорирует веб-фрагмент JARS без beans.xml. – Ginkgochris

Смежные вопросы