mardi 26 mai 2009

Les implémentations de JSF ne cohabitent pas en paix : le cas de RichFaces et Sun

Dans un contexte d’une application web : JSF1.2 avec RichFaces 3.3.1, Spring et JPA/Hibernate (et SpringWebflow),

… du très classique, …

sauf qu’on m’a soumit ce bug :

 

ATTENTION: JSF1059: WARNING! The com.sun.faces.verifyObjects feature is to aid developers not using tools. It shouldn''t be enabled if using an IDE, or if this application is being deployed for production as it will impact application start times.

26 mai 2009 20:45:48 org.apache.catalina.core.StandardContext listenerStart

GRAVE: Exception lors de l'envoi de l'événement contexte initialise¿½ (context initialized) à l'instance de classe d’écoute (listener) com.sun.faces.config.ConfigureListener

com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null

at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:212)

at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:174)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)

at org.apache.catalina.core.StandardService.start(StandardService.java:516)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)

at org.apache.catalina.startup.Catalina.start(Catalina.java:578)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

Caused by: java.lang.NullPointerException

at com.sun.faces.config.processor.ManagedBeanConfigProcessor.process( ManagedBeanConfigProcessor.java:241)

at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:94)

at com.sun.faces.config.processor.ValidatorConfigProcessor.process(ValidatorConfigProcessor.java:107)

at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(///

at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:94)

at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:132)

at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:202)

... 16 more

Et l’application ne s’affiche pas, sans aucune autre explication,

Ça laisse perplexe : les «bugs JSF sont connus pour leurs manques d’informations »

Mais,

En étudiant de très prés les librairies du projet on découvre l’existence de deux implémentations de JSF : celle de Sun et celle de Jboss.

Il suffit, alors, d’enlever le fichier « jsf-impl-1.2_06.jar », implémentation de JSF 1.2 par SUN, pour que le projet fonctionne sans aucun problème.

En fait, c’est très simple : les différentes implémentations de JSF ne cohabitent pas aussi pacifiquement qu’on pourrait penser ?

2 commentaires :

Anonyme a dit…

euh...c'est quoi l'interet d'avoir 2 implémentations JSF dans un même projet ?
en fait c'est quoi l'interet de JSF ?

Khaled BEN DRISS a dit…

l'intérêt de JSF est justement d'offrir une abstraction des composants WEB pour le développement ...
l'idéal c'est de choisir ses composants et de créer son application avec ...

Enregistrer un commentaire

Architecte SOA & Professionnel Open Source Headline Animator

 
Khaled BEN DRISS
Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.