There is a simple solution when using Mojarra JSF. Well, if you use Spring framework, you probably don't have this problem. This post provides a solution for JSF projects without Spring (because it doesn't make sense to use Spring in small, lightweight projects). Since Mojarra 1.2 there is a context parameter for web.xml com.sun.faces.injectionProvider. This parameter specifies a class that implements the InjectionProvider SPI. This implementation represents a hook the JSF implementation will use to provide resource injection support. If no provider, shipped with application server, was found and @PostConstruct / @PreDestroy are not called, we can set the value for this context parameter to com.sun.faces.vendor.WebContainerInjectionProvider as follows
<context-param> <param-name>com.sun.faces.injectionProvider</param-name> <param-value> com.sun.faces.vendor.WebContainerInjectionProvider </param-value> </context-param>Annotations will be parsed and annotated methods invoked now and you will see a message during application startup.
... 02.05.2011 16:04:13 com.sun.faces.spi.InjectionProviderFactory createInstance INFO: JSF1048: PostConstruct/PreDestroy-Annotationen available. ... ...It's also possible to use the JBoss implementaion org.jboss.web.jsf.integration.injection.JBossInjectionProvider. I have never tested it, but I think it would be a proper alternative.
<context-param> <param-name>com.sun.faces.injectionProvider</param-name> <param-value> org.jboss.web.jsf.integration.injection.JBossInjectionProvider </param-value> </context-param>JBoss 5 and above uses it automatically, so that no needs exist for the mentioned parameter.
Thank you. this information really help me.
ReplyDeleteHow can we implement this is tomcat 6?
ReplyDeleteYou are Big. I was looking solution from 2 days. Jboss As 7.1.1. not work with Primefaces
ReplyDeleteI have the same problem....(JSF with Spring) on JBOSS 5.1 with RichFaces....How to reslove
ReplyDeleteThanks Oleg it's worked for me... :)
ReplyDelete