J'ai trouvé trois entrées pour cela dans le débordement de pile:
javax.validation.ValidationException: impossible de trouver le fournisseur par défaut
javax.validation.ValidationException: impossible de trouver un fournisseur par défaut
Spring MVC 3 Validation - Impossible de trouver un fournisseur par défaut
et tous les trois disent d'ajouter Hibernate Validator au chemin de classe. Qu'est-ce que je fais quand j'ai fait ça et que j'ai toujours la même erreur?
1301 [main] ERROR org.springframework.web.servlet.DispatcherServlet - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/db.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to get the default Bean Validation factory
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.Java:1455)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.Java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.Java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.Java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.Java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.Java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.Java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.Java:567)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.Java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:464)
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.Java:631)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.Java:588)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.Java:645)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.Java:508)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.Java:449)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.Java:133)
at javax.servlet.GenericServlet.init(GenericServlet.Java:241)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.Java:433)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.Java:256)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:39)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.Java:616)
at org.mortbay.jetty.servlet.Context.startContext(Context.Java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.Java:1220)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.Java:513)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.Java:448)
at com.google.gwt.dev.Shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.Java:468)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:39)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.Java:130)
at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.Java:115)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:39)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.Java:130)
at org.mortbay.jetty.Server.doStart(Server.Java:222)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:39)
at com.google.gwt.dev.Shell.jetty.JettyLauncher.start(JettyLauncher.Java:672)
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.Java:509)
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.Java:1068)
at com.google.gwt.dev.DevModeBase.run(DevModeBase.Java:811)
at com.google.gwt.dev.DevMode.main(DevMode.Java:311)
Caused by: org.hibernate.HibernateException: Unable to get the default Bean Validation factory
at org.hibernate.cfg.beanvalidation.BeanValidationActivator.applyDDL(BeanValidationActivator.Java:127)
at org.hibernate.cfg.Configuration.applyBeanValidationConstraintsOnDDL(Configuration.Java:1674)
at org.hibernate.cfg.Configuration.applyConstraintsToDDL(Configuration.Java:1624)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.Java:1415)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.Java:1345)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.Java:717)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.Java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.Java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.Java:1452)
... 37 more
Caused by: Java.lang.reflect.InvocationTargetException
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:601)
at org.hibernate.cfg.beanvalidation.BeanValidationActivator.applyDDL(BeanValidationActivator.Java:118)
... 45 more
Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.Java:345)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.Java:106)
... 50 more
Caused by: javax.validation.ValidationException: Unable to find a default provider
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.Java:264)
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.Java:111)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.Java:342)
... 51 more
Le forum de printemps m'a aidé. http://forum.springsource.org/showthread.php?124477-ValidationException-Unable-to-find-a-default-provider
Quelque chose à voir avec l'hibernation 3.6.x. J'ai rétrogradé à Hibernate 3.5.6-Final et cela fonctionne à merveille.
Merci pour toute l'aide.
Ajoutez la dépendance hibernate-validator qui a l'implémentation de JSR 303 (validation de bean).
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
Peut-être serait-il utile de savoir que l’archive Zip téléchargée à partir du site du fournisseur doit être extraite à l’avance en l’ajoutant comme dépendance à votre projet. Par exemple, j'essaie d'ajouter l'archive hibernate-validator-4.3.2.Final-dist.Zip à mes dépendances de projet dans IDE, mais cela ne fonctionne pas. Ensuite, je l'extrais et ajoute toutes les bibliothèques du dossier dist à mon projet et le problème disparaît.