Hi Jean-Philippe, That is a spring problem, not a Restlet problem, so you're right to post to the spring forums.
Just this once, though: it looks like the error you'd get if (as in the code you posted earlier) you have: <bean id="entityManagerFactory" class="org.springfra mework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="persistenceUnitManager" value="persistenceUn itManager"/> <property name="jpaVendorAdapter" value="jpaVendor"/> </bean> The problem is value="persistenceUnitManager" -- you are telling spring to wire the String "persistenceUnitManager" into the property persistenceUnitManager. The property doesn't require a String, and you don't have any defined PropertyEditors which convert a String into a PersistenceUnitManager instance, so Spring doesn't know what to do. You meant to say ref="persistenceUnitManager". Rhett On Jan 21, 2009, at 11:39 PM, Jean-Philippe Steinmetz wrote: > Hi again, > > I've tried posting this question on the Spring forums but haven't > gotten any bites yet. I am hooking up my hibernate data source and > so forth in Spring and am getting an error I can't quite figure out. > > org.springframework.beans.factory.BeanCreationException: Error > creating bean with name 'entityManagerFactory' defined in > ServletContext resource [/WEB-INF/webservices-servlet.xml]: > Initialization of bean failed; nested exception is > org.springframework.beans.TypeMismatchException: Failed to convert > property value of type [java.lang.String] to required type > [org.springframework.orm.jpa.persistenceunit.PersistenceUnitManager] > for property 'persistenceUnitManager'; nested exception is > java.lang.IllegalArgumentException: Cannot convert value of type > [java.lang.String] to required type > [org.springframework.orm.jpa.persistenceunit.PersistenceUnitManager] > for property 'persistenceUnitManager': no matching editors or > conversion strategy found > at > org > .springframework > .beans > .factory > .support > .AbstractAutowireCapableBeanFactory > .doCreateBean(AbstractAutowireCapableBeanFactory.java:547) > at > org > .springframework > .beans.factory.support.AbstractAutowireCapableBeanFactory > $1.run(AbstractAutowireCapableBeanFactory.java:485) > at java.security.AccessController.doPrivileged(Native Method) > at > org > .springframework > .beans > .factory > .support > .AbstractAutowireCapableBeanFactory > .createBean(AbstractAutowireCapableBeanFactory.java:455) > at org.springframework.beans.factory.support.AbstractBeanFactory > $1.getObject(AbstractBeanFactory.java:251) > at > org > .springframework > .beans > .factory > .support > .DefaultSingletonBeanRegistry > .getSingleton(DefaultSingletonBeanRegistry.java:169) > at > org > .springframework > .beans > .factory > .support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) > at > org > .springframework > .beans > .factory > .support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170) > at > org > .springframework > .beans > .factory > .support > .DefaultListableBeanFactory > .preInstantiateSingletons(DefaultListableBeanFactory.java:407) > at > org > .springframework > .context > .support > .AbstractApplicationContext > .finishBeanFactoryInitialization(AbstractApplicationContext.java:735) > at > org > .springframework > .context > .support > .AbstractApplicationContext.refresh(AbstractApplicationContext.java: > 369) > at > org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext > (FrameworkServlet.java:332) > at > org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext > (FrameworkServlet.java:266) > at org.springframework.web.servlet.FrameworkServlet.initServletBean > (FrameworkServlet.java:236) > at > org > .springframework > .web.servlet.HttpServletBean.init(HttpServletBean.java:126) > at javax.servlet.GenericServlet.init(GenericServlet.java:212) > at > org > .apache > .catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172) > at > org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java: > 992) > at > org > .apache > .catalina.core.StandardContext.loadOnStartup(StandardContext.java: > 4058) > at > org.apache.catalina.core.StandardContext.start(StandardContext.java: > 4371) > at > org > .apache > .catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) > at > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java: > 771) > at > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525) > at > org > .apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java: > 926) > at > org > .apache > .catalina.startup.HostConfig.deployDirectories(HostConfig.java:889) > at > org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492) > at org.apache.catalina.startup.HostConfig.start(HostConfig.java: > 1149) > at > org > .apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java: > 311) > at > org > .apache > .catalina > .util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) > 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(Unknown Source) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > at java.lang.reflect.Method.invoke(Unknown Source) > at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) > > Anybody seen this before? > > On Wed, Jan 21, 2009 at 2:11 AM, Jerome Louvel <jerome.lou...@noelios.com > > wrote: > Hi Jean-Philippe, > > Good to hear! To customize the status page, have a look at the > StatusService class and related property for your Application. > > Best regards, > Jérôme Louvel > -- > Restlet ~ Founder and Lead developer ~ http://www.restlet.org > Noelios Technologies ~ Co-founder ~ http://www.noelios.com > > De : Jean-Philippe Steinmetz [mailto:caskate...@gmail.com] > Envoyé : mardi 20 janvier 2009 23:57 > > À : discuss@restlet.tigris.org > Objet : Re: RESTlet + Spring > > Ok i've changed my depedencies to use restlet 1.1-SNAPSHOT and 2.5 > for spring. I am getting what looks like a running system. > > Is there any way to customize this page... > The server has not found anything matching the request URI > You can get technical details here. > Please continue your visit at our home page. > > Thanks again, > > Jean-Philippe > > > On Tue, Jan 20, 2009 at 2:27 PM, Jerome Louvel <jerome.lou...@noelios.com > > wrote: > Hi Jean-Philippe, > > I've noticed that we declare a dependency on Spring 2.5 and not on > the latest 2.5.6. This may be the cause of your issue. > > I've just updated the dependency in SVN branch 1.1 and trunk. > > Best regards, > J�r�me Louvel > > -- > Restlet ~ Founder and Lead developer ~ > http://www.restlet.org > > Noelios Technologies ~ Co-founder ~ http://www.noelios.com > > > > De : Jean-Philippe Steinmetz [mailto:caskate...@gmail.com] > Envoy� : mardi 20 janvier 2009 22:42 > > � : discuss@restlet.tigris.org > Objet : Re: RESTlet + Spring > > I'm using maven to manage all the dependencies. It's possible > something is incorrectly done in my pom. For Spring I am using 2.5.6 > for spring-core, spring-context and spring-web. I am using 2.0.8 for > spring-hibernate3 and spring-jpa. For restlet I am using 1.1.1 for > everything. > > Here is my pom.xml > > <project xmlns="http://maven.apache.org/POM/4.0.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance > " > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 > http://maven.apache.org/maven-v4_0_0.xsd > "> > <modelVersion>4.0.0</modelVersion> > <groupId>com.webservice</groupId> > <artifactId>webservice</artifactId> > <packaging>war</packaging> > <version>0.3</version> > <name>Web Service</name> > > <dependencies> > <!-- Servlet/Restlet --> > <dependency> > <groupId>javax.servlet</groupId> > <artifactId>servlet-api</artifactId> > <version>2.5</version> > </dependency> > <dependency> > <groupId>com.noelios.restlet</groupId> > <artifactId>com.noelios.restlet</artifactId> > <version>1.1.1</version> > </dependency> > <dependency> > <groupId>com.noelios.restlet</groupId> > <artifactId>com.noelios.restlet.ext.servlet</artifactId> > <version>1.1.1</version> > </dependency> > <dependency> > <groupId>com.noelios.restlet</groupId> > <artifactId>com.noelios.restlet.ext.spring</artifactId> > <version>1.1.1</version> > </dependency> > <dependency> > <groupId>org.restlet</groupId> > <artifactId>org.restlet</artifactId> > <version>1.1.1</version> > </dependency> > <dependency> > <groupId>org.restlet</groupId> > <artifactId>org.restlet.ext.json</artifactId> > <version>1.1.1</version> > </dependency> > > <!-- Serialization --> > <dependency> > <groupId>com.thoughtworks.xstream</groupId> > <artifactId>xstream</artifactId> > <version>1.3</version> > </dependency> > <dependency> > <groupId>org.codehaus.jettison</groupId> > <artifactId>jettison</artifactId> > <version>1.0-RC2</version> > </dependency> > > <!-- Persistence --> > <dependency> > <groupId>javax.persistence</groupId> > <artifactId>persistence-api</artifactId> > <version>1.0</version> > </dependency> > <dependency> > <groupId>org.hibernate</groupId> > <artifactId>hibernate-core</artifactId> > <version>3.3.1.GA</version> > </dependency> > <dependency> > <groupId>mysql</groupId> > <artifactId>mysql-connector-java</artifactId> > <version>5.1.6</version> > </dependency> > > <!-- Spring --> > <dependency> > <groupId>org.springframework</groupId> > <artifactId>spring-core</artifactId> > <version>2.5.6</version> > </dependency> > <dependency> > <groupId>org.springframework</groupId> > <artifactId>spring-context</artifactId> > <version>2.5.6</version> > </dependency> > <dependency> > <groupId>org.springframework</groupId> > <artifactId>spring-hibernate3</artifactId> > <version>2.0.8</version> > </dependency> > <dependency> > <groupId>org.springframework</groupId> > <artifactId>spring-jpa</artifactId> > <version>2.0.8</version> > </dependency> > <dependency> > <groupId>org.springframework</groupId> > <artifactId>spring-web</artifactId> > <version>2.5.6</version> > </dependency> > > <!-- Logging --> > <dependency> > <groupId>ch.qos.logback</groupId> > <artifactId>logback-classic</artifactId> > <version>0.9.11</version> > </dependency> > <dependency> > <groupId>org.slf4j</groupId> > <artifactId>slf4j-api</artifactId> > <version>1.5.3</version> > </dependency> > > <!-- Unit Testing --> > <dependency> > <groupId>junit</groupId> > <artifactId>junit</artifactId> > <version>3.8.1</version> > <scope>test</scope> > </dependency> > </dependencies> > > <build> > <plugins> > <plugin> > <groupId>org.codehaus.mojo</groupId> > <artifactId>tomcat-maven-plugin</artifactId> > <configuration> > <server>LocalTomcat</server> > </configuration> > </plugin> > <plugin> > <artifactId>maven-compiler-plugin</artifactId> > <configuration> > <source>1.5</source> > <target>1.5</target> > <optimize>true</optimize> > </configuration> > </plugin> > </plugins> > </build> > > <repositories> > <repository> > <id>jboss</id> > <url>http://repository.jboss.com/maven2</url> > <releases> > <enabled>true</enabled> > </releases> > <snapshots> > <enabled>false</enabled> > </snapshots> > </repository> > <repository> > <id>jboss-snapshot</id> > <url>http://repository.jboss.org/maven2</url> > <releases> > <enabled>true</enabled> > </releases> > <snapshots> > <enabled>true</enabled> > </snapshots> > </repository> > <repository> > <id>restlet</id> > <url>http://maven.restlet.org</url> > </repository> > </repositories> > </project> > > > On Tue, Jan 20, 2009 at 12:34 PM, Rhett Sutphin <rh...@detailedbalance.net > > wrote: > Hi Jean-Philippe, > > At first glance, the error seems to be a generic spring error -- that > one of the wired dependencies is of the wrong type. Looking at your > XML, I wonder if it is failing here: > > > <property name="persistenceUnitManager" > > value="persistenceUnitManager"/> > > <property name="jpaVendorAdapter" value="jpaVendor"/> > > I think those should be "ref" instead of "value". I haven't seen this > particular error before, though, so I'm not sure. > > If it's not that, would you please let us know what versions of Spring > and Restlet you are using? > > Rhett > > On Jan 20, 2009, at 1:04 PM, Jean-Philippe Steinmetz wrote: > > > Hi All, > > > > I'm working on integrating restlet and spring for use in a web app > > to be run under Tomcat. After reading up on the Spring extension > > (thank you Jerome) I have decided to go the restlet as the main > > controller route. This is due to the fact that Spring is only being > > used as a Dao implementation layer. I came across the > > com.noelios.restlet.ext.spring.RestletFrameworkServlet class. Based > > on its description it would appear this is what I should use to > > properly set things up. Unfortunately I am getting crash errors when > > I try and access my restlet app from a browser. I am hoping someone > > may be able to shed some light on the situation. > > > > The error I am getting is: > > java.lang.IllegalArgumentException: Value does not implement > > specified type > > org.springframework.util.Assert.isTrue(Assert.java:65) > > > > org > > .springframework > > .beans > > .factory > > .support > > .DefaultListableBeanFactory > > .registerResolvableDependency(DefaultListableBeanFactory.java:325) > > > > > > org.springframework.web.context.support.WebApplicationContextUtils.registerWebApplicationScopes > > (WebApplicationContextUtils.java:129) > > > > org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.postProcessBeanFactory > > (AbstractRefreshableWebApplicationContext.java:143) > > > > > > org > > .springframework > > .context > > .support > > .AbstractApplicationContext.refresh(AbstractApplicationContext.java: > > 359) > > > > org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext > > (FrameworkServlet.java:332) > > > > org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext > > (FrameworkServlet.java:266) > > > > > > org > > .springframework > > .web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java: > > 236) > > > > org > > .springframework > > .web.servlet.HttpServletBean.init(HttpServletBean.java:126) > > javax.servlet.GenericServlet.init(GenericServlet.java:212) > > > > > > org > > .apache > > .catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > > > > org > > .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: > > 286) > > > > org > > .apache > > .coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java: > 857) > > > > org.apache.coyote.http11.Http11AprProtocol > > $Http11ConnectionHandler.process(Http11AprProtocol.java:565) > > org.apache.tomcat.util.net.AprEndpoint > $Worker.run(AprEndpoint.java: > > 1509) > > java.lang.Thread.run(Unknown Source) > > > > Here is what my web.xml file looks like: > > <!DOCTYPE web-app PUBLIC > > "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" > > "http://java.sun.com/dtd/web-app_2_3.dtd" > > > > > <web-app> > > <display-name>Web Service</display-name> > > > > <context-param> > > <param-name>org.restlet.application</param-name> > > <param-value>webservice.RestApplication</param-value> > > </context-param> > > > > <!-- Restlet Adapter --> > > <servlet> > > <servlet-name>webservices</servlet-name> > > <servlet- > > class>com.noelios.restlet.ext.spring.RestletFrameworkServlet</ > > servlet-class> > > <load-on-startup>1</load-on-startup> > > </servlet> > > > > <!-- Let Restlet capture all requests --> > > <servlet-mapping> > > <servlet-name>webservices</servlet-name> > > <url-pattern>/*</url-pattern> > > </servlet-mapping> > > </web-app> > > > > I also have a webservices-servlet.xml file for Spring bean > > definition. It looks like: > > <?xml version="1.0" encoding="UTF-8"?> > > <beans xmlns="http://www.springframework.org/schema/beans" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xmlns:util="http://www.springframework.org/schema/util" > > xsi:schemaLocation=" > > http://www.springframework.org/schema/beans > > http://www.springframework.org/schema/beans/spring-beans-2.5.xsd > > http://www.springframework.org/schema/util > > http://www.springframework.org/schema/util/spring-util-2.5.xsd > > "> > > > > <bean id="root" class="webservice.RestApplication" /> > > > > <!-- Data Source --> > > <bean id="dataSource" > > class="com.mchange.v2.c3p0.ComboPooledDataSource" > > destroy-method="close"> > > <property name="driverClass" > value="com.mysql.jdbc.Driver" /> > > <property name="jdbcUrl" value="jdbc:mysql://localhost: > > 3306" /> > > <property name="username" value="kfpws_user" /> > > <property name="password" value="" /> > > > > <property name="initialPoolSize" value="3"/> > > <property name="minPoolSize" value="3"/> > > <property name="maxPoolSize" value="50"/> > > <property name="idleConnectionTestPeriod" value="200"/> > > <property name="acquireIncrement" value="1"/> > > <property name="maxStatements" value="0"/> > > <property name="numHelperThreads" value="3"/> > > </bean> > > > > <!-- JPA --> > > <bean id="persistenceUnitManager" > > > > class > > = > > "org > > .springframework > > .orm.jpa.persistenceunit.DefaultPersistenceUnitManager"> > > <property name="persistenceXmlLocations"> > > <list> > > <value>classpath:persistence.xml</value> > > </list> > > </property> > > <property name="defaultDataSource" ref="dataSource"/> > > </bean> > > <bean id="jpaDialect" > > class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/> > > <bean id="jpaVendor" > > > > > class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> > > <property name="showSql" value="true"/> > > <property name="generateDdl" value="true"/> > > </bean> > > <bean id="entityManagerFactory" > > > > class > > > ="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> > > <property name="dataSource" ref="dataSource"/> > > <property name="persistenceUnitManager" > > value="persistenceUnitManager"/> > > <property name="jpaVendorAdapter" value="jpaVendor"/> > > </bean> > > > > <!-- Tx Manager --> > > <bean id="transactionManager" > > class="org.springframework.orm.jpa.JpaTransactionManager"> > > <property name="entityManagerFactory" > > ref="entityManagerFactory"/> > > <property name="dataSource" ref="dataSource"/> > > </bean> > > > > </beans> > > > > Any ideas what the problem is? > > > > ------------------------------------------------------ > http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1039032 > > > ------------------------------------------------------ http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1042912