2013-12-04 3 views
5

Я запускаю приложение в следующей среде.WELD-001519 Реализация InjectionTarget создана для абстрактного класса «xxx». Невозможно создать экземпляры этого типа

  • GlassFish Server 4.0
  • Mojarra 2.2.4
  • PrimeFaces 4.0 Окончательные
  • PrimeFaces Extension 1.1.0
  • OmniFaces 1.6.3

После добавления OmniFaces, приведенные ниже предупреждения отображаются на терминале сервера.

WARNING: WELD-001519 An InjectionTarget implementation is created for an abstract class org.omnifaces.eventlistener.DefaultServletContextListener. It will not be possible to produce instances of this type!  
WARNING: WELD-001519 An InjectionTarget implementation is created for an abstract class org.omnifaces.filter.HttpFilter. It will not be possible to produce instances of this type! 

//WARNING: Class 'javax.ejb.PostActivate' not found, interception based on it is not enabled 
//WARNING: Class 'javax.ejb.PrePassivate' not found, interception based on it is not enabled 
INFO: Initializing Mojarra 2.2.4 (20131003-1354 https://svn.java.net/svn/mojarra~svn/tags/[email protected]) for context '/Project-war' 

WARNING: WELD-001529 An InjectionTarget implementation is created for a class org.omnifaces.application.OmniApplicationFactory which does not have any appropriate constructor. 
WARNING: WELD-001529 An InjectionTarget implementation is created for a class org.primefaces.context.PrimeFacesContextFactory which does not have any appropriate constructor. 
WARNING: WELD-001529 An InjectionTarget implementation is created for a class org.omnifaces.context.OmniPartialViewContextFactory which does not have any appropriate constructor. 
WARNING: WELD-001529 An InjectionTarget implementation is created for a class org.primefaces.context.PrimePartialViewContextFactory which does not have any appropriate constructor. 

INFO: Running on PrimeFaces 4.0 
INFO: Running on PrimeFaces Extensions null 
INFO: Using OmniFaces version null 

INFO: Loading application [Project#Project-war.war] at [Project-war] 
INFO: Project was successfully deployed in 22,734 milliseconds. 

Есть ли проблемы с OmniFaces в данной среде?

ответ

5

Нет, это только предупреждения, а не ошибки. Weld просто не может создать цели для инъекций для абстрактных классов или классов, у которых нет конструктора по умолчанию. Цели инъекции должны быть в состоянии сделать Class.forName(className).newInstance() без проблем.

Это возмущение при регистрации уже указано как Weld issue 1547, и при этом уровень ПРЕДУПРЕЖДЕНИЯ понижается до уровня DEBUG, поскольку Weld 2.1.1/2.2.0.

Следует отметить, что есть еще одна ошибка, наиболее вероятно связанная с загрузкой классов GlassFish. OmniFaces имеет VetoAnnotatedTypeExtension, который должен исключать все классы OmniFaces из ненужного сканирования в качестве управляемых бинов CDI. Это отлично работает, когда Weld используется в Tomcat 7 и JBoss 6/7/8. То есть эти предупреждения вообще не отображаются для классов OmniFaces.

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