Can you give me some more info,such as the camel version and your osgi container and version. The bundle manifest might not hurt either.
On Fri, Jan 15, 2010 at 10:01 AM, lekkie <[email protected]> wrote: > > See attached trace, thanks. > > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.apache.cxf.bus.spring.BusApplicationListener' defined in OSGi > resource[classpath:META-INF/cxf/cxf.xml|bnd.id=192|bnd.sym=kimono-processor-bundle]: > Initialization of bean failed; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'camelContext': Invocation of init method failed; nested exception > is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot > find class [org.tempuri.MyAggregationStrategy] for bean with name > 'myAggregatorStrategy' defined in URL > [bundleentry://192.fwk5195164/META-INF/spring/camel-context.xml]; nested > exception is java.lang.ClassNotFoundException: > org.tempuri.MyAggregationStrategy not found from bundle > [kimono-processor-bundle] > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) > at java.security.AccessController.doPrivileged(Native Method) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) > at > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:308) > at > org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:947) > at > org.springframework.context.support.AbstractApplicationContext.registerListeners(AbstractApplicationContext.java:701) > at > org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1500(AbstractDelegatedExecutionApplicationContext.java:69) > at > org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:351) > at > org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85) > at > org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320) > at > org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:136) > at java.lang.Thread.run(Thread.java:595) > Caused by: org.springframework.beans.factory.BeanCreationException: Error > creating bean with name 'camelContext': Invocation of init method failed; > nested exception is > org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find > class [org.tempuri.MyAggregationStrategy] for bean with name > 'myAggregatorStrategy' defined in URL > [bundleentry://192.fwk5195164/META-INF/spring/camel-context.xml]; nested > exception is java.lang.ClassNotFoundException: > org.tempuri.MyAggregationStrategy not found from bundle > [kimono-processor-bundle] > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) > at java.security.AccessController.doPrivileged(Native Method) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) > at > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) > at > org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:880) > at > org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:88) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1331) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) > ... 17 more > Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: > Cannot find class [org.tempuri.MyAggregationStrategy] for bean with name > 'myAggregatorStrategy' defined in URL > [bundleentry://192.fwk5195164/META-INF/spring/camel-context.xml]; nested > exception is java.lang.ClassNotFoundException: > org.tempuri.MyAggregationStrategy not found from bundle > [kimono-processor-bundle] > at > org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1141) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:524) > at > org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1177) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:222) > at > org.springframework.context.support.AbstractApplicationContext.getBeanNamesForType(AbstractApplicationContext.java:937) > at > org.apache.camel.spring.CamelContextFactoryBean.getBeanForType(CamelContextFactoryBean.java:539) > at > org.apache.camel.spring.CamelContextFactoryBean.afterPropertiesSet(CamelContextFactoryBean.java:185) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335) > ... 31 more > Caused by: java.lang.ClassNotFoundException: > org.tempuri.MyAggregationStrategy not found from bundle > [kimono-processor-bundle] > at > org.springframework.osgi.util.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:103) > at > org.springframework.osgi.util.BundleDelegatingClassLoader.loadClass(BundleDelegatingClassLoader.java:156) > at java.lang.ClassLoader.loadClass(ClassLoader.java:251) > at org.springframework.util.ClassUtils.forName(ClassUtils.java:211) > at > org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:385) > at > org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1138) > ... 39 more > Caused by: java.lang.ClassNotFoundException: > org.tempuri.MyAggregationStrategy > at > org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:448) > at > org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) > at > org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398) > at > org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105) > at java.lang.ClassLoader.loadClass(ClassLoader.java:251) > at > org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:326) > at > org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:231) > at > org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1193) > at > org.springframework.osgi.util.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:99) > ... 44 more > 15:14:36,952 | INFO | heckpoint Worker | MessageDatabase | > emq.store.kahadb.MessageDatabase 605 | Slow KahaDB access: cleanup took 561 > > > > > > Stephen Gargan wrote: >> >> Hmm, You probably do export it's package correctly in the manifest, >> though I know I've often forgotten to, is it correct? Could you post >> the exception trace so we can have a look? >> >> >> On Fri, Jan 15, 2010 at 6:46 AM, lekkie <[email protected]> wrote: >>> >>> Thanks Stephen. >>> >>> I followed your sample snippet below. >>> >>> The wiretap was a success, however, I couldnt get through with the >>> aggregator. >>> >>> It kept complaining class not found for my custom aggregator. See sample >>> snippet below: >>> >>> <osgi:camelContext xmlns="http://camel.apache.org/schema/spring" >>> trace="true"> >>> >>> <package>org.tempuri</package> >>> >>> <route> >>> <from uri="nmr:RequestProcessor" /> >>> <wireTap uri="direct:ProcessorServices"/> >>> <!-- <to uri="log:TerminalManagerRequest"/>--> >>> <to >>> uri="nmr:{http://services.locator/}ServicesService:ServicesPort"/> >>> <to uri="direct:ProcessorServices"/> >>> </route> >>> >>> <route> >>> <from uri="direct:ProcessorServices" /> >>> <aggregate strategyRef="myAggregatorStrategy" batchSize="2"> >>> <correlationExpression> >>> <constant>true</constant> >>> </correlationExpression> >>> <to uri="log:Response"/> >>> </aggregate> >>> </route> >>> >>> </osgi:camelContext> >>> >>> <bean id="myAggregatorStrategy" >>> class="org.tempuri.MyAggregationStrategy"/> >>> >>> </beans> >>> >>> >>> >>> I have the ffg in my project >>> >>> src/main/java/org/tempuri/MyAggregationStrategy.java >>> src/main/resources/META-INF/spring/camel-context.xml >>> >>> And I can confirm the class is compiled with the bundle deployed. >>> >>> Any ideas? >>> >>> >>> >>> >>> Stephen Gargan wrote: >>>> >>>> Hi, >>>> >>>> You can use Wiretaps and an aggregator to do what you're suggesting. >>>> At each step that you want an intermediate result to be available, >>>> wiretap it off to an aggregator and set the batch size of the >>>> aggregator accordingly. >>>> >>>> from("direct:consumerEndpoint").wireTap("direct:aggregator").to("direct:requestToSomeEndpointTransformer").to( >>>> "direct:someEndpoint").to("direct:aggregator"); >>>> >>>> from("direct:aggregator").aggregate().header("id").batchSize(2).groupExchanges().to("mock:result"); >>>> >>>> One thing to note is that groupExchanges() will gather up all the >>>> aggregated exchanges and store them in a property in the exchange. You >>>> get at them via >>>> >>>> List<Exchange> grouped = e.getProperty(Exchange.GROUPED_EXCHANGE, >>>> List.class); >>>> >>>> You'll need to write a custom processor (in place of the mock) to >>>> combine/transform them to your liking as before responding. You can >>>> find a bunch of info about aggregators here >>>> >>>> http://camel.apache.org/aggregator.html >>>> >>>> ste. >>>> >>>> On Thu, Jan 14, 2010 at 12:12 AM, lekkie <[email protected]> wrote: >>>>> >>>>> Hi guys, >>>>> >>>>> >>>>> Just a quick one. I have this scenario where I 'd like to manipulate a >>>>> request and some reponse from an endpoint. The flow below describe what >>>>> I >>>>> am >>>>> trying to achieve: >>>>> >>>>> <osgi:camelContext xmlns="http://camel.apache.org/schema/spring" >>>>> trace="true"> >>>>> <route> >>>>> <from uri="nmr:consumerEndpoint"/> >>>>> <to uri="xslt:requestToSomeEndpoint.xsl"/> >>>>> <to uri="nmr:someEndpoint"/> >>>>> <to uri="xslt:requestToAnotherEndpoint.xsl"/> >>>>> <to uri="nmr:anotherEndpoint"/> >>>>> </route> >>>>> </camelcontext> >>>>> >>>>> I'd like the transformation (requestToAnotherEndpoint.xsl) to be able >>>>> to >>>>> access/manipulate the original request message from >>>>> nmr:consumerEndpoint >>>>> and >>>>> the response from nmr:someEndpoint in order to product its output. >>>>> >>>>> Is this scenario possible? >>>>> >>>>> -- >>>>> View this message in context: >>>>> http://old.nabble.com/Request-message-accessibility-manipulation-tp27157259p27157259.html >>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>> >>>>> >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://old.nabble.com/Request-message-accessibility-manipulation-tp27157259p27178135.html >>> Sent from the Camel - Users mailing list archive at Nabble.com. >>> >>> >> >> > > -- > View this message in context: > http://old.nabble.com/Request-message-accessibility-manipulation-tp27157259p27181118.html > Sent from the Camel - Users mailing list archive at Nabble.com. > >
