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