Regarding switchyard-quickstart-camel-jpa-binding
mannuyi May 17, 2013 9:44 AMI just create a new switchyard project and want to implement a sample like switchyard-quickstart-camel-jpa-binding.
Here's my switchyard design and source.
<?xml version="1.0" encoding="UTF-8"?> <switchyard xmlns="urn:switchyard-config:switchyard:1.0" xmlns:bean="urn:switchyard-component-bean:config:1.0" xmlns:jpa="urn:switchyard-component-camel-jpa:config:1.0" xmlns:quartz="urn:switchyard-component-camel-quartz:config:1.0" xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="episode10" targetNamespace="urn:com.example.switchyard:episode10:1.0"> <sca:composite name="episode10" targetNamespace="urn:com.example.switchyard:episode10:1.0"> <sca:component name="PeriodicServiceBean"> <bean:implementation.bean class="com.example.switchyard.episode10.PeriodicServiceBean"/> <sca:service name="PeriodicService"> <sca:interface.java interface="com.example.switchyard.episode10.PeriodicService"/> </sca:service> <sca:reference name="StoreService"> <sca:interface.java interface="com.example.switchyard.episode10.StoreService"/> </sca:reference> </sca:component> <sca:service name="PeriodicService" promote="PeriodicServiceBean/PeriodicService"> <sca:interface.java interface="com.example.switchyard.episode10.StoreService"/> <quartz:binding.quartz> <quartz:contextMapper/> <quartz:name>episode10</quartz:name> <quartz:cron>*/5 * * * * ?</quartz:cron> </quartz:binding.quartz> </sca:service> <sca:reference name="StoreReference" multiplicity="0..1" promote="PeriodicServiceBean/StoreService"> <sca:interface.java interface="com.example.switchyard.episode10.StoreService"/> <jpa:binding.jpa> <jpa:contextMapper/> <jpa:entityClassName>com.example.switchyard.episode10.Greet</jpa:entityClassName> <jpa:persistenceUnit>JpaEvents</jpa:persistenceUnit> <jpa:transactionManager>#jtaTransactionManager</jpa:transactionManager> <jpa:produce/> </jpa:binding.jpa> </sca:reference> </sca:composite> </switchyard> |
Of course, I have persistent.xml and other source files like following:
After deployed successfully, I got such exception:
17:30:55,024 INFO [com.example.switchyard.episode10.PeriodicServiceBean] (DefaultQuartzScheduler-camel-3_Worker-4) Sending Greet [null, from David, to Rob, created on Fri May 17 17:30:55 CST 2013] to JPA _store
17:30:55,034 WARN [org.switchyard.component.bean.ServiceProxyHandler] (DefaultQuartzScheduler-camel-3_Worker-4) Invocation of operation 'execute' on bean component 'com.example.switchyard.episode10.PeriodicServiceBeanfailed.: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source) [:1.7.0]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0]
......
Caused by: org.switchyard.component.bean.BeanComponentException: A service reference to service 'StoreReference' is not bound into this client proxy instance. A reference configuration to the service may be required in the application configuration.
......
@Service(PeriodicService.class) public class PeriodicServiceBean implements PeriodicService {
@Inject @Reference("StoreReference") private StoreService _store;
public void execute() { Greet greet = createRandomGreet(); _logger.info("Sending {} to JPA _store", greet); _store.storeGreeting(greet); } ...... } |
Since in the log, we can see "Sending Greet..." has been printed, but failed to execute "_store.storeGreeting" caused by injection failed I think.
But I don't know how to fix this issue.
I'd appreciate who can help me.
Thanks.