camel + service mix + spring aspect

akshay_ajmani
2009-07-02T13:47:24+00:00


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.








Re: camel + service mix + spring aspect by Claus Ibsen on 2009-07-03T11:28:35+00:00
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<akshay.ajmani@gmail.com> wrot=
e:
>
> Hi,
>
> =A0 =A0I 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 questio=
n
> is , is it possible to add spring aspects to camel-context.xml i.e
>
> <?xml version=3D"1.0" encoding=3D"UTF-8"?>
>
> <beans xmlns=3D"http://www.springframework.org/schema/beans"
> =A0 =A0 =A0 xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
> =A0 =A0 =A0 xmlns:aop=3D"http://www.springframework.org/schema/aop"
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0xmlns:context=3D"http://www.springframewor=
k.org/schema/context"
> =A0 =A0 =A0 xsi:schemaLocation=3D"
> =A0 =A0 =A0 http://www.springframework.org/schema/beans
> =A0 =A0 =A0 http://www.springframework.org/schema/beans/spring-beans-2.5.=
xsd
> =A0 =A0 =A0 http://activemq.apache.org/camel/schema/spring
> =A0 =A0 =A0 http://activemq.apache.org/camel/schema/spring/camel-spring.x=
sd
> =A0 =A0 =A0 http://www.springframework.org/schema/aop
> =A0 =A0 =A0 http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
> =A0 =A0 =A0 http://www.springframework.org/schema/context
>
> http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>
>
> =A0 =A0 =A0 <context:annotation-config />
>
> =A0 =A0 =A0 =A0<aop:aspectj-autoproxy/>
>
>
>
> =A0<camelContext id=3D"camel"
> xmlns=3D"http://activemq.apache.org/camel/schema/spring">
> =A0 =A0 =A0 =A0 =A0 <package>org.camel.su</package>
> =A0</camelContext>
> =A0<bean id=3D"firstAspect" class=3D"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 {
>
>
>
> =A0 =A0 =A0 =A0@Pointcut("execution(* *(..))")
> =A0 =A0 =A0 =A0public void myFirstPointCut()
> =A0 =A0 =A0 =A0{
>
> =A0 =A0 =A0 =A0}
>
> }
>
> package org.aspect;
>
> import org.aspectj.lang.ProceedingJoinPoint;
> import org.aspectj.lang.annotation.Around;
> import org.aspectj.lang.annotation.Aspect;
>
> @Aspect
> public class FirstAspect {
>
>
> =A0 =A0 =A0 =A0@Around("SystemArchitecture.myFirstPointCut()")
> =A0 =A0 =A0 =A0public void firstAspect(ProceedingJoinPoint joinPoint)
> =A0 =A0 =A0 =A0{
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0System.out.println("PRINTING FIRST ASPECT"=
);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0try {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0joinPoint.=
proceed();
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} catch (Throwable e) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0// TODO Auto-generated cat=
ch block
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0e.printStackTrace();
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}
> =A0 =A0 =A0 =A0}
> }
>
>
>
>
> If defining aspects in camel-context.xml is possible, then how do I defin=
e
> aspects on my RouteBuilder class.Because I want a particular piece of cod=
e
> to be always executed before my route builder class is called and I do no=
t
> want to embed that code in the routebuilder class.
>
> For ex: If I do some thing like this below,
> <?xml version=3D"1.0" encoding=3D"UTF-8"?>
>
> <beans xmlns=3D"http://www.springframework.org/schema/beans"
> =A0 =A0 =A0 xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
> =A0 =A0 =A0 xmlns:aop=3D"http://www.springframework.org/schema/aop"
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0xmlns:context=3D"http://www.springframewor=
k.org/schema/context"
> =A0 =A0 =A0 xsi:schemaLocation=3D"
> =A0 =A0 =A0 http://www.springframework.org/schema/beans
> =A0 =A0 =A0 http://www.springframework.org/schema/beans/spring-beans-2.5.=
xsd
> =A0 =A0 =A0 http://activemq.apache.org/camel/schema/spring
> =A0 =A0 =A0 http://activemq.apache.org/camel/schema/spring/camel-spring.x=
sd
> =A0 =A0 =A0 http://www.springframework.org/schema/aop
> =A0 =A0 =A0 http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
> =A0 =A0 =A0 http://www.springframework.org/schema/context
>
> http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>
>
> =A0 =A0 =A0 <context:annotation-config />
>
> =A0 =A0 =A0 =A0<aop:aspectj-autoproxy/>
>
>
>
> =A0<camelContext id=3D"camel"
> xmlns=3D"http://activemq.apache.org/camel/schema/spring">
> <routeBuilder ref=3D"someRouterBuilder"/>
> =A0</camelContext>
> =A0<bean id=3D"firstAspect" class=3D"org.aspect.FirstAspect"/>
> =A0<bean id=3D"someRouterBuilder" class=3D"org.camel.su.MyRouteBuilder"/>
> </beans>
>
> public class MyRouteBuilder extends RouteBuilder {
>
> =A0 =A0 =A0 =A0@Override
> =A0 =A0 =A0 =A0public void configure() throws Exception {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0System.out.println("IN ROUTE BUILDER#####"=
);
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0// from our camelService which is called b=
y the file poller
>
> from("jbi:service:http://servicemix.apache.org/example/orderProcessing")
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 // we process the received order xml
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 .process(new OrderProcessor())
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 // and send the result xml back to th=
e file sender
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 .to("jbi:service:http://servicemix.ap=
ache.org/example/fileSender");
>
>
> =A0 =A0 =A0 =A0}
>
>
> =A0 =A0 =A0 =A0}
>
>
>
> I get an exception is saying that routeBuilder should of type
> org.apache.camel.builder.RouteBuilder. I do not understand why I am getti=
ng
> 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.
>
>
>
>
>
>
>
> 


Re: camel + service mix + spring aspect by akshay_ajmani on 2009-07-03T17:34:03+00:00

This is my pom.xml
<?xml version=3D"1.0" encoding=3D"UTF-8"?><project>
  <parent>
    <artifactId>camel</artifactId>
    <groupId>camel.trial</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <groupId>camel.trial</groupId>
  <artifactId>camel-su</artifactId>
  <packaging>jbi-service-unit</packaging>
  <name>A Camel based JBI Service Unit</name>
  <version>0.0.1-SNAPSHOT</version>
  <url>http://www.myorganization.org</url>
  <build>
    <defaultGoal>install</defaultGoal>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.servicemix.tooling</groupId>
        <artifactId>jbi-maven-plugin</artifactId>
        <version>${servicemix-version}</version>
        <extensions>true</extensions>
      </plugin>
      <plugin>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-maven-plugin</artifactId>
        <version>${camel-version}</version> <!=09=09=09=09<enabled>false</enabled>
=09=09=09</releases>
=09=09=09<snapshots />
=09=09=09<id>open.iona.m2-snapshot</id>
=09=09=09<name>IONA Open Source Community Snapshot Repository</name>
=09=09=09<url>http://repo.open.iona.com/maven2-snapshot
=09=09=09</url>
=09=09</repository>
    <repository>
      <releases />
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>apache</id>
      <name>Apache Repository</name>
      <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
    </repository>
    <repository>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots />
      <id>apache.snapshots</id>
      <name>Apache Snapshots Repository</name>
      <url>http://people.apache.org/repo/m2-snapshot-repository</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases />
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>apache</id>
      <name>Apache Repository</name>
      <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
    </pluginRepository>
    <pluginRepository>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots />
      <id>apache.snapshots</id>
      <name>Apache Snapshots Repository</name>
      <url>http://people.apache.org/repo/m2-snapshot-repository</url>
    </pluginRepository>
  </pluginRepositories>
  <dependencies>
    <dependency>
      <groupId>org.apache.servicemix</groupId>
      <artifactId>servicemix-camel</artifactId>
      <version>${servicemix-version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.servicemix</groupId>
      <artifactId>servicemix-core</artifactId>
      <version>${servicemix-version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
    =09<groupId>org.aspectj</groupId>
    =09<artifactId>aspectjrt</artifactId>
    =09<version>1.6.5</version>
    </dependency>
     <!  </dependencies>
  <properties>
    =09=09<servicemix-version>3.3.1.17-fuse</servicemix-version>
    <camel-version>1.6.0</camel-version> <!Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'camelContext': Invoca
tion of init method failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'myBuilder' defined in file
[C:progressuse-esb-3.4.0.2datasmxservice-assembliescamel-saersion-=
15
susservicemix-camelcamel-sucamel-context.xml]: Initialization of bean
failed; nested exception is java.lang.NoSuchMe
thodError:
org.springframework.util.ReflectionUtils.isEqualsMethod(Ljava/lang/reflect/=
Method;)Z




Claus Ibsen-2 wrote:
>=20
> Hi
>=20
> 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.
>=20
> 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.
>=20
>=20
>=20
> On Thu, Jul 2, 2009 at 3:46 PM, akshay-ajmani<akshay.ajmani@gmail.com>
> wrote:
>>
>> Hi,
>>
>> =C2=A0 =C2=A0I 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=3D"1.0" encoding=3D"UTF-8"?>
>>
>> <beans xmlns=3D"http://www.springframework.org/schema/beans"
>> =C2=A0 =C2=A0 =C2=A0 xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-insta=
nce"
>> =C2=A0 =C2=A0 =C2=A0 xmlns:aop=3D"http://www.springframework.org/schema/=
aop"
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
>> =C2=A0xmlns:context=3D"http://www.springframework.org/schema/context"
>> =C2=A0 =C2=A0 =C2=A0 xsi:schemaLocation=3D"
>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/beans
>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/beans/spring-=
beans-2.5.xsd
>> =C2=A0 =C2=A0 =C2=A0 http://activemq.apache.org/camel/schema/spring
>> =C2=A0 =C2=A0 =C2=A0 http://activemq.apache.org/camel/schema/spring/came=
l-spring.xsd
>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/aop
>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/aop/spring-ao=
p-2.5.xsd
>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/context
>>
>> http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>>
>>
>> =C2=A0 =C2=A0 =C2=A0 <context:annotation-config />
>>
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0<aop:aspectj-autoproxy/>
>>
>>
>>
>> =C2=A0<camelContext id=3D"camel"
>> xmlns=3D"http://activemq.apache.org/camel/schema/spring">
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <package>org.camel.su</package>
>> =C2=A0</camelContext>
>> =C2=A0<bean id=3D"firstAspect" class=3D"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 {
>>
>>
>>
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0@Pointcut("execution(* *(..))")
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0public void myFirstPointCut()
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0{
>>
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>>
>> }
>>
>> package org.aspect;
>>
>> import org.aspectj.lang.ProceedingJoinPoint;
>> import org.aspectj.lang.annotation.Around;
>> import org.aspectj.lang.annotation.Aspect;
>>
>> @Aspect
>> public class FirstAspect {
>>
>>
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0@Around("SystemArchitecture.myFirstPointCut()=
")
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0public void firstAspect(ProceedingJoinPoint j=
oinPoint)
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0{
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0System.out.printl=
n("PRINTING FIRST ASPECT");
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0try {
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0joinPoint.proceed();
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0} catch (Throwabl=
e e) {
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0// TODO Auto-generated catch block
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0e.printStackTrace();
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>> }
>>
>>
>>
>>
>> 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=3D"1.0" encoding=3D"UTF-8"?>
>>
>> <beans xmlns=3D"http://www.springframework.org/schema/beans"
>> =C2=A0 =C2=A0 =C2=A0 xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-insta=
nce"
>> =C2=A0 =C2=A0 =C2=A0 xmlns:aop=3D"http://www.springframework.org/schema/=
aop"
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
>> =C2=A0xmlns:context=3D"http://www.springframework.org/schema/context"
>> =C2=A0 =C2=A0 =C2=A0 xsi:schemaLocation=3D"
>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/beans
>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/beans/spring-=
beans-2.5.xsd
>> =C2=A0 =C2=A0 =C2=A0 http://activemq.apache.org/camel/schema/spring
>> =C2=A0 =C2=A0 =C2=A0 http://activemq.apache.org/camel/schema/spring/came=
l-spring.xsd
>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/aop
>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/aop/spring-ao=
p-2.5.xsd
>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/context
>>
>> http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>>
>>
>> =C2=A0 =C2=A0 =C2=A0 <context:annotation-config />
>>
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0<aop:aspectj-autoproxy/>
>>
>>
>>
>> =C2=A0<camelContext id=3D"camel"
>> xmlns=3D"http://activemq.apache.org/camel/schema/spring">
>> <routeBuilder ref=3D"someRouterBuilder"/>
>> =C2=A0</camelContext>
>> =C2=A0<bean id=3D"firstAspect" class=3D"org.aspect.FirstAspect"/>
>> =C2=A0<bean id=3D"someRouterBuilder" class=3D"org.camel.su.MyRouteBuilde=
r"/>
>> </beans>
>>
>> public class MyRouteBuilder extends RouteBuilder {
>>
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0@Override
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0public void configure() throws Exception {
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0System.out.printl=
n("IN ROUTE BUILDER#####");
>>
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0// from our camel=
Service which is called by the file
>> poller
>>
>> from("jbi:service:http://servicemix.apache.org/example/orderProcessing")
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 // we pro=
cess the received order xml
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .process(=
new OrderProcessor())
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 // and se=
nd the result xml back to the file sender
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
>> .to("jbi:service:http://servicemix.apache.org/example/fileSender");
>>
>>
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>>
>>
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>>
>>
>>
>> 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.
>>
>>
>>
>>
>>
>>
>>
>> 

Re: camel + service mix + spring aspect by akshay_ajmani on 2009-07-03T17:55:44+00:00



akshay-ajmani wrote:
>=20
> This is my pom.xml
> <?xml version=3D"1.0" encoding=3D"UTF-8"?><project>
>   <parent>
>     <artifactId>camel</artifactId>
>     <groupId>camel.trial</groupId>
>     <version>0.0.1-SNAPSHOT</version>
>   </parent>
>   <modelVersion>4.0.0</modelVersion>
>   <groupId>camel.trial</groupId>
>   <artifactId>camel-su</artifactId>
>   <packaging>jbi-service-unit</packaging>
>   <name>A Camel based JBI Service Unit</name>
>   <version>0.0.1-SNAPSHOT</version>
>   <url>http://www.myorganization.org</url>
>   <build>
>     <defaultGoal>install</defaultGoal>
>     <plugins>
>       <plugin>
>         <artifactId>maven-compiler-plugin</artifactId>
>         <configuration>
>           <source>1.5</source>
>           <target>1.5</target>
>         </configuration>
>       </plugin>
>       <plugin>
>         <groupId>org.apache.servicemix.tooling</groupId>
>         <artifactId>jbi-maven-plugin</artifactId>
>         <version>${servicemix-version}</version>
>         <extensions>true</extensions>
>       </plugin>
>       <plugin>
>         <groupId>org.apache.camel</groupId>
>         <artifactId>camel-maven-plugin</artifactId>
>         <version>${camel-version}</version> <!> =09=09=09=09<enabled>false</enabled>
> =09=09=09</releases>
> =09=09=09<snapshots />
> =09=09=09<id>open.iona.m2-snapshot</id>
> =09=09=09<name>IONA Open Source Community Snapshot Repository</name>
> =09=09=09<url>http://repo.open.iona.com/maven2-snapshot
> =09=09=09</url>
> =09=09</repository>
>     <repository>
>       <releases />
>       <snapshots>
>         <enabled>false</enabled>
>       </snapshots>
>       <id>apache</id>
>       <name>Apache Repository</name>
>       <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url=
>
>     </repository>
>     <repository>
>       <releases>
>         <enabled>false</enabled>
>       </releases>
>       <snapshots />
>       <id>apache.snapshots</id>
>       <name>Apache Snapshots Repository</name>
>       <url>http://people.apache.org/repo/m2-snapshot-repository</url>
>     </repository>
>   </repositories>
>   <pluginRepositories>
>     <pluginRepository>
>       <releases />
>       <snapshots>
>         <enabled>false</enabled>
>       </snapshots>
>       <id>apache</id>
>       <name>Apache Repository</name>
>       <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url=
>
>     </pluginRepository>
>     <pluginRepository>
>       <releases>
>         <enabled>false</enabled>
>       </releases>
>       <snapshots />
>       <id>apache.snapshots</id>
>       <name>Apache Snapshots Repository</name>
>       <url>http://people.apache.org/repo/m2-snapshot-repository</url>
>     </pluginRepository>
>   </pluginRepositories>
>   <dependencies>
>     <dependency>
>       <groupId>org.apache.servicemix</groupId>
>       <artifactId>servicemix-camel</artifactId>
>       <version>${servicemix-version}</version>
>     </dependency>
>     <dependency>
>       <groupId>org.apache.servicemix</groupId>
>       <artifactId>servicemix-core</artifactId>
>       <version>${servicemix-version}</version>
>       <scope>provided</scope>
>     </dependency>
>     <dependency>
>     =09<groupId>org.aspectj</groupId>
>     =09<artifactId>aspectjrt</artifactId>
>     =09<version>1.6.5</version>
>     </dependency>
>      <!>   </dependencies>
>   <properties>
>     =09=09<servicemix-version>3.3.1.17-fuse</servicemix-version>
>     <camel-version>1.6.0</camel-version> <!> Caused by: org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'camelContext': Invoca
> tion of init method failed; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'myBuilder' defined in file
> [C:progressuse-esb-3.4.0.2datasmxservice-assembliescamel-saersio=
n-15
> susservicemix-camelcamel-sucamel-context.xml]: Initialization of bean
> failed; nested exception is java.lang.NoSuchMe
> thodError:
> org.springframework.util.ReflectionUtils.isEqualsMethod(Ljava/lang/reflec=
t/Method;)Z
>=20
> My camel context file is
> <?xml version=3D"1.0"?>
>=20
> <beans xmlns=3D"http://www.springframework.org/schema/beans"
>        xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
>        xmlns:aop=3D"http://www.springframework.org/schema/aop"
> =09=09xmlns:context=3D"http://www.springframework.org/schema/context"
> =09=09xmlns:camel=3D"http://camel.apache.org/schema/spring"
>        xsi:schemaLocation=3D"
>        http://www.springframework.org/schema/beans=20
>        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>        http://activemq.apache.org/camel/schema/spring=20
>        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
>      =20
> http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>       =20
>        <context:annotation-config />
>=20
> =09<aop:aspectj-autoproxy/>
>     =20
>   <camelContext id=3D"camelContext" useJmx=3D"true"
> xmlns=3D"http://activemq.apache.org/camel/schema/spring">
>      <routeBuilder ref=3D"myBuilder" /> =20
>   </camelContext>=20
>=20
> <bean id=3D"myBuilder" class=3D"org.camel.su.MyRouteBuilder"/>
> <bean id=3D"firstAspect" class=3D"org.aspect.FirstAspect"/>
> </beans>
>=20
> I have spring core 2.5.6 jar which does not have this method defined.Is m=
y
> POM.xml correct as I think I may need to change the version of the jar to
> make this work.
>=20
>=20
> Claus Ibsen-2 wrote:
>>=20
>> Hi
>>=20
>> 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.
>>=20
>> 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.
>>=20
>>=20
>>=20
>> On Thu, Jul 2, 2009 at 3:46 PM, akshay-ajmani<akshay.ajmani@gmail.com>
>> wrote:
>>>
>>> Hi,
>>>
>>> =C2=A0 =C2=A0I 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=3D"1.0" encoding=3D"UTF-8"?>
>>>
>>> <beans xmlns=3D"http://www.springframework.org/schema/beans"
>>> =C2=A0 =C2=A0 =C2=A0 xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-inst=
ance"
>>> =C2=A0 =C2=A0 =C2=A0 xmlns:aop=3D"http://www.springframework.org/schema=
/aop"
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
>>> =C2=A0xmlns:context=3D"http://www.springframework.org/schema/context"
>>> =C2=A0 =C2=A0 =C2=A0 xsi:schemaLocation=3D"
>>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/beans
>>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/beans/spring=
-beans-2.5.xsd
>>> =C2=A0 =C2=A0 =C2=A0 http://activemq.apache.org/camel/schema/spring
>>> =C2=A0 =C2=A0 =C2=A0 http://activemq.apache.org/camel/schema/spring/cam=
el-spring.xsd
>>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/aop
>>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/aop/spring-a=
op-2.5.xsd
>>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/context
>>>
>>> http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>>>
>>>
>>> =C2=A0 =C2=A0 =C2=A0 <context:annotation-config />
>>>
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0<aop:aspectj-autoproxy/>
>>>
>>>
>>>
>>> =C2=A0<camelContext id=3D"camel"
>>> xmlns=3D"http://activemq.apache.org/camel/schema/spring">
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <package>org.camel.su</package>
>>> =C2=A0</camelContext>
>>> =C2=A0<bean id=3D"firstAspect" class=3D"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 {
>>>
>>>
>>>
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0@Pointcut("execution(* *(..))")
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0public void myFirstPointCut()
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0{
>>>
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>>>
>>> }
>>>
>>> package org.aspect;
>>>
>>> import org.aspectj.lang.ProceedingJoinPoint;
>>> import org.aspectj.lang.annotation.Around;
>>> import org.aspectj.lang.annotation.Aspect;
>>>
>>> @Aspect
>>> public class FirstAspect {
>>>
>>>
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0@Around("SystemArchitecture.myFirstPointCut(=
)")
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0public void firstAspect(ProceedingJoinPoint =
joinPoint)
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0{
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0System.out.print=
ln("PRINTING FIRST ASPECT");
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0try {
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0joinPoint.proceed();
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0} catch (Throwab=
le e) {
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0// TODO Auto-generated catch block
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0e.printStackTrace();
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>>> }
>>>
>>>
>>>
>>>
>>> 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=3D"1.0" encoding=3D"UTF-8"?>
>>>
>>> <beans xmlns=3D"http://www.springframework.org/schema/beans"
>>> =C2=A0 =C2=A0 =C2=A0 xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-inst=
ance"
>>> =C2=A0 =C2=A0 =C2=A0 xmlns:aop=3D"http://www.springframework.org/schema=
/aop"
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
>>> =C2=A0xmlns:context=3D"http://www.springframework.org/schema/context"
>>> =C2=A0 =C2=A0 =C2=A0 xsi:schemaLocation=3D"
>>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/beans
>>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/beans/spring=
-beans-2.5.xsd
>>> =C2=A0 =C2=A0 =C2=A0 http://activemq.apache.org/camel/schema/spring
>>> =C2=A0 =C2=A0 =C2=A0 http://activemq.apache.org/camel/schema/spring/cam=
el-spring.xsd
>>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/aop
>>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/aop/spring-a=
op-2.5.xsd
>>> =C2=A0 =C2=A0 =C2=A0 http://www.springframework.org/schema/context
>>>
>>> http://www.springframework.org/schema/context/spring-context-2.5.xsd">
>>>
>>>
>>> =C2=A0 =C2=A0 =C2=A0 <context:annotation-config />
>>>
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0<aop:aspectj-autoproxy/>
>>>
>>>
>>>
>>> =C2=A0<camelContext id=3D"camel"
>>> xmlns=3D"http://activemq.apache.org/camel/schema/spring">
>>> <routeBuilder ref=3D"someRouterBuilder"/>
>>> =C2=A0</camelContext>
>>> =C2=A0<bean id=3D"firstAspect" class=3D"org.aspect.FirstAspect"/>
>>> =C2=A0<bean id=3D"someRouterBuilder" class=3D"org.camel.su.MyRouteBuild=
er"/>
>>> </beans>
>>>
>>> public class MyRouteBuilder extends RouteBuilder {
>>>
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0@Override
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0public void configure() throws Exception {
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0System.out.print=
ln("IN ROUTE BUILDER#####");
>>>
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0// from our came=
lService which is called by the file
>>> poller
>>>
>>> from("jbi:service:http://servicemix.apache.org/example/orderProcessing"=
)
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 // we pr=
ocess the received order xml
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .process=
(new OrderProcessor())
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 // and s=
end the result xml back to the file sender
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
>>> .to("jbi:service:http://servicemix.apache.org/example/fileSender");
>>>
>>>
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>>>
>>>
>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>>>
>>>
>>>
>>> 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.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> 

Re: camel + service mix + spring aspect by Claus Ibsen on 2009-07-04T06:00:55+00:00
>> I have spring core 2.5.6 jar which does not have this method defined.Is my
>> POM.xml correct as I think I may need to change the version of the jar to
>> make this work.

Hi

You are using an old version of ServiceMix 3.3.x that uses Spring 2.0.x.
And Camel 1.6.0 uses Spring 2.5.x. Camel 1.6.1 and newer should work
better with Spring 2.0.x.
So try using 1.6.1 instead and keep the old spring 2.0.x jars.

Or you could consider upgrading SMX also to 3.4.x as it uses Spring 2.5.x AFAIR.

           <servicemix-version>3.3.1.17-fuse</servicemix-version>
   <camel-version>1.6.0</camel-version> <!

Re: camel + service mix + spring aspect by akshay_ajmani on 2009-07-06T13:08:56+00:00

Hi,
   This is my new pom.xml. I changed the service mix version as follows:
<servicemix-version>3.4.0-fuse</servicemix-version>

But now it is giving me errors related to artifacts not found.Missing:

Please let me know the correct versions to use and repository locations.



My properties tag in pom.xml is as follows:
<properties>
    		<servicemix-jbi-version>3.3.1.17-fuse</servicemix-jbi-version>
    		<servicemix-version>3.4.0-fuse</servicemix-version>
    <camel-version>1.6.0</camel-version> <!> 
>>> I have spring core 2.5.6 jar which does not have this method defined.Is
>>> my
>>> POM.xml correct as I think I may need to change the version of the jar
>>> to
>>> make this work.
> 
> Hi
> 
> You are using an old version of ServiceMix 3.3.x that uses Spring 2.0.x.
> And Camel 1.6.0 uses Spring 2.5.x. Camel 1.6.1 and newer should work
> better with Spring 2.0.x.
> So try using 1.6.1 instead and keep the old spring 2.0.x jars.
> 
> Or you could consider upgrading SMX also to 3.4.x as it uses Spring 2.5.x
> AFAIR.
> 
>            <servicemix-version>3.3.1.17-fuse</servicemix-version>
>    <camel-version>1.6.0</camel-version> <!> 
Loading


$ This page is proudly powered by www.pubbs.net, you can see more at apachecamel archive | Partners: Global Manufacturers