Hi What version of Camel are you using? There was an issue with 1.6.0 or older not being able to be IoC in some circumstances if the bean was a RouteBuilder instance. And thats the case with your route builder.
However when using proxy it can be on interface or class level. And aspectj looks like it does at classlevel so hence something can go wrong when Camel is not able to see it as a RouteBuilder instance. On Thu, Jul 2, 2009 at 3:46 PM, akshay_ajmani<[email protected]> wrote: > > Hi, > > I have implemented the following example > http://cwiki.apache.org/SM/order-file-processing.html and it is working > fine. I need to add few modifications to my camel context.xml. My question > is , is it possible to add spring aspects to camel-context.xml i.e > > <?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:aop="http://www.springframework.org/schema/aop" > xmlns:context="http://www.springframework.org/schema/context" > xsi:schemaLocation=" > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.5.xsd > http://activemq.apache.org/camel/schema/spring > http://activemq.apache.org/camel/schema/spring/camel-spring.xsd > http://www.springframework.org/schema/aop > http://www.springframework.org/schema/aop/spring-aop-2.5.xsd > http://www.springframework.org/schema/context > > http://www.springframework.org/schema/context/spring-context-2.5.xsd"> > > > <context:annotation-config /> > > <aop:aspectj-autoproxy/> > > > > <camelContext id="camel" > xmlns="http://activemq.apache.org/camel/schema/spring"> > <package>org.camel.su</package> > </camelContext> > <bean id="firstAspect" class="org.aspect.FirstAspect"/> > > </beans> > > > > I have my pointcuts defined in the java code using spring annotations. > > The code is as follows: > > @Aspect > public class SystemArchitecture { > > > > �...@pointcut("execution(* *(..))") > public void myFirstPointCut() > { > > } > > } > > package org.aspect; > > import org.aspectj.lang.ProceedingJoinPoint; > import org.aspectj.lang.annotation.Around; > import org.aspectj.lang.annotation.Aspect; > > @Aspect > public class FirstAspect { > > > �...@around("SystemArchitecture.myFirstPointCut()") > public void firstAspect(ProceedingJoinPoint joinPoint) > { > System.out.println("PRINTING FIRST ASPECT"); > try { > joinPoint.proceed(); > } catch (Throwable e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > } > } > > > > > If defining aspects in camel-context.xml is possible, then how do I define > aspects on my RouteBuilder class.Because I want a particular piece of code > to be always executed before my route builder class is called and I do not > want to embed that code in the routebuilder class. > > For ex: If I do some thing like this below, > <?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:aop="http://www.springframework.org/schema/aop" > xmlns:context="http://www.springframework.org/schema/context" > xsi:schemaLocation=" > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.5.xsd > http://activemq.apache.org/camel/schema/spring > http://activemq.apache.org/camel/schema/spring/camel-spring.xsd > http://www.springframework.org/schema/aop > http://www.springframework.org/schema/aop/spring-aop-2.5.xsd > http://www.springframework.org/schema/context > > http://www.springframework.org/schema/context/spring-context-2.5.xsd"> > > > <context:annotation-config /> > > <aop:aspectj-autoproxy/> > > > > <camelContext id="camel" > xmlns="http://activemq.apache.org/camel/schema/spring"> > <routeBuilder ref="someRouterBuilder"/> > </camelContext> > <bean id="firstAspect" class="org.aspect.FirstAspect"/> > <bean id="someRouterBuilder" class="org.camel.su.MyRouteBuilder"/> > </beans> > > public class MyRouteBuilder extends RouteBuilder { > > �...@override > public void configure() throws Exception { > System.out.println("IN ROUTE BUILDER#####"); > > // from our camelService which is called by the file poller > > from("jbi:service:http://servicemix.apache.org/example/orderProcessing") > // we process the received order xml > .process(new OrderProcessor()) > // and send the result xml back to the file sender > > .to("jbi:service:http://servicemix.apache.org/example/fileSender"); > > > } > > > } > > > > I get an exception is saying that routeBuilder should of type > org.apache.camel.builder.RouteBuilder. I do not understand why I am getting > this exception as my RouteBuilder class is already extending the camel > RouteBuilder class. > > > Please help me these queries.I thank you all for your time. > > > > > > > > -- > View this message in context: > http://www.nabble.com/camel-%2B-service-mix-%2B-spring-aspect-tp24307030p24307030.html > Sent from the Camel - Users mailing list archive at Nabble.com. > > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus
