Hi Willem, I get the same error if I use the syntax :
.bean("com.goodyear.emea.gicl.esb.service.Persistence", "save") Caused by: org.apache.camel.component.bean.MethodNotFoundException: Method with name: save not found on bean: com.goodyear.emea.gicl.esb.service.Persistence. ... at org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:153) at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:126) and this one Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.goodyear.emea.gicl.esb.service.Persistence': Could not resolve matching constructor at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:238) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925) If I use the syntax : .bean(com.goodyear.emea.gicl.esb.service.Persistence.class, "save") Kind regards, Charles Moulliard Senior Enterprise Architect (J2EE, .NET, SOA) Apache Camel Committer ******************************************************************* - Blog : http://cmoulliard.blogspot.com - Twitter : http://twitter.com/cmoulliard - Linkedlin : http://www.linkedin.com/in/charlesmoulliard On Thu, May 6, 2010 at 11:42 AM, Willem Jiang <willem.ji...@gmail.com> wrote: > Hi Charles, > > Maybe something is wrong with the OSGi service which is consumed within > Spring DM. I need to dig your test case for it. > > Can you try to using the interface name > "com.goodyear.emea.gicl.esb.service.Persistence" instead of "sapPersistence" > as the camel-bean's name ? As camel-osgi supports to access the OSGi service > within Camel context. > > Willem > > > Charles Moulliard wrote: >> >> Hi, >> >> I have created a camel Bean which is exposed as a spring DM service >> >> public interface Persistence { >> >> public void save(@Body FinishedTireDocument finishedTiredDocument, >> Exchange ecxh); >> >> } >> >> public class PersistenceImpl implements Persistence { >> >> private SapDocumentDAO sapDocumentDAO; >> >> public void save(@Body FinishedTireDocument finishedTiredDocument, >> Exchange ecxh) { >> >> getSapDocumentDAO().save(finishedTiredDocument); >> >> } >> >> public SapDocumentDAO getSapDocumentDAO() { >> return sapDocumentDAO; >> } >> >> public void setSapDocumentDAO(SapDocumentDAO sapDocumentDAO) { >> this.sapDocumentDAO = sapDocumentDAO; >> } >> >> } >> >> Spring config >> >> <bean id="sapServiceImpl" >> class="com.goodyear.emea.gicl.esb.service.impl.PersistenceImpl"> >> <property name="sapDocumentDAO"> >> <osgi:reference >> interface="com.goodyear.emea.gicl.esb.persistence.SapDocumentDAO"/> >> </property> >> </bean> >> >> <osgi:service ref="sapServiceImpl" >> interface="com.goodyear.emea.gicl.esb.service.Persistence"/> >> >> The service is called from a camel route like this : >> >> public void configure() throws Exception { >> >> /** >> * Route persisting objects in DB >> */ >> from(queueValidatedUri) >> .bean("sapPersistence", "save") >> .to(queueValidatedUri); >> } >> >> Spring config >> >> <osgi:reference id="sapPersistence" >> interface="com.goodyear.emea.gicl.esb.service.Persistence"/> >> >> Unfortunately, I get this error. >> >> Caused by: org.apache.camel.component.bean.MethodNotFoundException: >> Method with name: save not found on bean: sapPersistence >> >> Is it allowed to exposed a camel bean like that ? >> >> Kind regards, >> >> Charles Moulliard >> >> Senior Enterprise Architect (J2EE, .NET, SOA) >> Apache Camel Committer >> >> ******************************************************************* >> - Blog : http://cmoulliard.blogspot.com >> - Twitter : http://twitter.com/cmoulliard >> - Linkedlin : http://www.linkedin.com/in/charlesmoulliard >> > >