I am on my second App Engine App but am using Spring 3.0.3 this time and it is uncharted water for me.
So I am just trying to narrow down the error and whether it is GAE, Spring or maybe I am missing a jar. Has anybody successfully got annotated form validation working on GAE in Spring 3.x? Everything was going fine until I tried to use <mvc:annotation-driven / > in spring-servlet.xml. This produces errors on the launch of development server in debug mode. I have found other people who appear to have similar issues (ie, http://groups.google.com/group/google-appengine-java/browse_thread/thread/d93fd7385bf85bf7). However other people have reported that this particular issue has been resolved as of GAE SDK 1.3.1 http://www.openscope.net/2010/02/08/spring-mvc-3-0-and-jsr-303-aka-javax-validation/#comment-94 The solution put forward in the above link is valid for Spring 2.5 but I am using annotated controllers and can't override the initBinder method. Is there another solution for Spring 3.x? The stack trace below occurs at the start of the development server in debug. Thanks 03/07/2010 1:46:34 AM org.springframework.web.servlet.FrameworkServlet initServletBean SEVERE: Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is javax.validation.ValidationException: Unable to find a default provider at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java: 1412) 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:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java: 222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java: 288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: 190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java: 574) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java: 895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java: 425) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java: 442) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java: 458) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java: 339) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java: 306) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java: 127) at javax.servlet.GenericServlet.init(GenericServlet.java:215) at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java: 440) at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java: 263) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50) at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java: 685) at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java: 1250) at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java: 517) at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java: 467) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java: 130) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java: 130) at org.mortbay.jetty.Server.doStart(Server.java:224) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50) at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java: 185) at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java: 146) at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java: 219) at com.google.appengine.tools.development.DevAppServerMain $StartAction.apply(DevAppServerMain.java:162) at com.google.appengine.tools.util.Parser $ParseResult.applyArgs(Parser.java:48) at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java: 113) at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java: 89) Caused by: javax.validation.ValidationException: Unable to find a default provider at javax.validation.Validation $GenericBootstrapImpl.configure(Validation.java:264) at org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java: 161) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory $5.run(AbstractAutowireCapableBeanFactory.java:1459) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java: 1457) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java: 1409) ... 36 more 03/07/2010 1:46:34 AM com.google.appengine.tools.development.ApiProxyLocalImpl log SEVERE: [1278121594297000] javax.servlet.ServletContext log: unavailable org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is javax.validation.ValidationException: Unable to find a default provider at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java: 1412) 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:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java: 222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java: 288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: 190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java: 574) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java: 895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java: 425) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java: 442) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java: 458) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java: 339) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java: 306) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java: 127) at javax.servlet.GenericServlet.init(GenericServlet.java:215) at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java: 440) at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java: 263) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50) at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java: 685) at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java: 1250) at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java: 517) at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java: 467) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java: 130) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java: 130) at org.mortbay.jetty.Server.doStart(Server.java:224) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50) at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java: 185) at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java: 146) at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java: 219) at com.google.appengine.tools.development.DevAppServerMain $StartAction.apply(DevAppServerMain.java:162) at com.google.appengine.tools.util.Parser $ParseResult.applyArgs(Parser.java:48) at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java: 113) at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java: 89) Caused by: javax.validation.ValidationException: Unable to find a default provider at javax.validation.Validation $GenericBootstrapImpl.configure(Validation.java:264) at org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java: 161) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory $5.run(AbstractAutowireCapableBeanFactory.java:1459) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java: 1457) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java: 1409) ... 36 more -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
