On Wed, May 6, 2009 at 6:53 AM, Xasima Xirohata <xas...@gmail.com> wrote: > Thanks! Will try. Curious, is it available any camel instruction > (spring based or java dsl) that may allow to process all classes in a > specified packages to automatically find out all camel annotation to > process. > > Smth like > <camelContext id="camel" > xmlns="http://activemq.apache.org/camel/schema/spring"> > <beanPostProcessor scan="package"/> > .... > > If there are a lot of producer / consumer it might be verbose to list > them all explicitly in xml file to aware CamelPostProcessor to pick > them up and process. Yeah I was wondering if Camel could tail the spring IoC component scanner <!-- Spring IoC scan --> <context:component-scan base-package="com.iba.trainunion.trainlist.camel"/>
But maybe Spring is only invoking the CamelBeanPostProcessor if the bean found has any Spring related annotations? eg try adding some spring annotation and see if the @EndpointInject is populated then. > > On Wed, May 6, 2009 at 6:31 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: >> Hi >> >> Ah its Camel that inject its own annotations, so @EndpointInjected is >> handled by Camel. >> Its the CamelBeanPostProcessor that is a Spring BeanPostProcessor. >> >> And since your SimpleProducer is nor known by Spring or Camel its not >> injected at all. >> >> So define it as a Spring bean >> <bean id="simpleProducer" class="xxxx"/> >> >> And Camel should be able to have a go at its parsing to find the >> @EndpointInjected annotations. >> >> >> >> On Tue, May 5, 2009 at 7:15 PM, Xasima Xirohata <xas...@gmail.com> wrote: >>> Hi. I'm using geronimo-jetty-2.1.4 running with jdk1.6. This geronimo >>> has an activemq (4.1.2) running on 61616. I have created queue >>> 'SendReceiveQueue' using geronimo and it works. Generally, I would >>> like to add camel as mediation engine which will connect Http, Cometd, >>> Restlet , and geronimo JMS, >>> >>> I have started to just create simple consumer / producer binded to >>> the existed JMS queue. Unfortunately, I have got NPE when inject >>> producer. >>> >>> It's is interesting that I can inject ConnectionFactory + Queue in >>> standard Servlet using EJB. So the problem in >>> >>> public class CustomServlet extends org.restlet.ext.servlet.ServerServlet{ >>> >>> @Resource(name="DefaultActiveMQConnectionFactory") >>> private ConnectionFactory connectionFactory; >>> >>> @Resource(name="SendReceiveQueue") >>> private Queue queue; >>> >>> protected Log log = LogFactory.getLog(this.getClass()); >>> �...@override >>> public void init() throws ServletException { >>> try { >>> if(queue!=null && connectionFactory!=null) >>> log.info("ok"); >>> >>> >>> Here is the code >>> ------------------------------------------ SimpleProducer >>> ---------------------------------------- >>> public class SimpleProducer { >>> >>> �...@endpointinject(uri="jms:queue:SendReceiveQueue") >>> ProducerTemplate producer; >>> >>> �...@endpointinject(uri="jms:SendReceiveQueue") >>> ProducerTemplate producer2; >>> >>> �...@endpointinject(uri="activemq:SendReceiveQueue") >>> ProducerTemplate producer3; >>> >>> �...@endpointinject(uri="activemq:queue:SendReceiveQueue") >>> ProducerTemplate producer4; >>> >>> Log log = LogFactory.getLog(this.getClass()); >>> >>> public void produceMessage() { >>> // Everything is NULL >>> if(producer!=null) >>> {producer.sendBody("<message>test</message>");log.info("ok1"); }; >>> if(producer2!=null){ producer2.sendBody("<message>test</message>"); >>> log.info("ok2");}; >>> if(producer3!=null){ producer3.sendBody("<message>test</message>"); >>> log.info("ok3");}; >>> if(producer4!=null){ producer4.sendBody("<message>test</message>"); >>> log.info("ok4");}; >>> } >>> } >>> >>> ------------------------------------ Routing >>> ---------------------------------------- >>> public class RoutingConfiguration extends RouteBuilder { >>> protected static Log log = >>> LogFactory.getLog(RoutingConfiguration.class); >>> >>> �...@override >>> public void configure() throws Exception { >>> log.info("Listing components.."); >>> >>> for (String e : getContext().getComponentNames()) >>> log.info(e); >>> >>> log.info("Listing endpoints..."); >>> for (Endpoint e : getContext().getEndpoints()) >>> log.info(e); >>> } >>> } >>> ------------------------------------------ WEB-INF >>> /applicationContext.xml ---------------------------- >>> <?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:camel="http://camel.apache.org/schema/spring" >>> xmlns:context="http://www.springframework.org/schema/context" >>> xmlns:broker="http://activemq.apache.org/schema/core" >>> xsi:schemaLocation="http://www.springframework.org/schema/beans >>> http://www.springframework.org/schema/beans/spring-beans-2.5.xsd >>> http://www.springframework.org/schema/context >>> http://www.springframework.org/schema/context/spring-context-2.5.xsd >>> http://camel.apache.org/schema/spring >>> http://camel.apache.org/schema/spring/camel-spring.xsd >>> http://activemq.apache.org/schema/core >>> http://activemq.apache.org/schema/core/activemq-core-5.2.0.xsd"> >>> >>> <!-- Spring IoC scan --> >>> <context:component-scan >>> base-package="com.iba.trainunion.trainlist.camel"/> >>> >>> <!-- Define camel --> >>> <camel:camelContext id="camel"> >>> <!-- will auto discover camel router in the specified package >>> --> >>> >>> <camel:package>com.iba.trainunion.trainlist.camel</camel:package> >>> <camel:jmxAgent id="agent" createConnector="true"/> >>> </camel:camelContext> >>> >>> <bean id="jms" >>> class="org.apache.activemq.camel.component.ActiveMQComponent"> >>> <property name="brokerURL" value="tcp://localhost:61616"/> >>> </bean> >>> >>> <bean id="activemq" >>> class="org.apache.camel.component.jms.JmsComponent"> >>> <property name="connectionFactory"> >>> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> >>> <property name="brokerURL" >>> value="tcp://localhost:61616"/> >>> </bean> >>> </property> >>> </bean> >>> </beans> >>> >>> --------------------------------------- WEB-INF / web.xml >>> ------------------------------------ >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xmlns="http://java.sun.com/xml/ns/javaee" >>> xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >>> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee >>> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" >>> version="2.5"> >>> >>> <!-- ============ CAMEL ================= --> >>> <!-- Start spring autowiring configured in applicationContext.xml --> >>> <listener> >>> >>> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> >>> </listener> >>> <!-- ============ / CAMEL ================= --> >>> >>> ....... >>> >>> >>> --------------------------------------- WEB-INF / geronimo-web.xml >>> ------------------------------------ >>> I have deployed spring-tx, spring-aop, spring into geronimo, since >>> there are a lack of them in standard repository. >>> >>> >>> <?xml version="1.0" encoding="UTF-8" standalone="no"?> >>> <web:web-app >>> xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" >>> xmlns:client="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0" >>> xmlns:conn="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2" >>> xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2" >>> xmlns:ejb="http://openejb.apache.org/xml/ns/openejb-jar-2.2" >>> xmlns:name="http://geronimo.apache.org/xml/ns/naming-1.2" >>> xmlns:pers="http://java.sun.com/xml/ns/persistence" >>> xmlns:pkgen="http://openejb.apache.org/xml/ns/pkgen-2.1" >>> xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0" >>> xmlns:web="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"> >>> <dep:environment> >>> <dep:moduleId> >>> <dep:groupId>com.iba.trainunion</dep:groupId> >>> <dep:artifactId>trainlist-web</dep:artifactId> >>> <dep:version>1.0</dep:version> >>> <dep:type>car</dep:type> >>> </dep:moduleId> >>> <dep:dependencies> >>> <dep:dependency> >>> <dep:groupId>org.springframework</dep:groupId> >>> <dep:artifactId>spring-beans</dep:artifactId> >>> <dep:version>2.5.6</dep:version> >>> <dep:type>jar</dep:type> >>> </dep:dependency> >>> <dep:dependency> >>> <dep:groupId>org.springframework</dep:groupId> >>> <dep:artifactId>spring-context</dep:artifactId> >>> <dep:version>2.5.6</dep:version> >>> <dep:type>jar</dep:type> >>> </dep:dependency> >>> <dep:dependency> >>> <dep:groupId>org.springframework</dep:groupId> >>> <dep:artifactId>spring-core</dep:artifactId> >>> <dep:version>2.5.6</dep:version> >>> <dep:type>jar</dep:type> >>> </dep:dependency> >>> <dep:dependency> >>> <dep:groupId>org.springframework</dep:groupId> >>> <dep:artifactId>spring-web</dep:artifactId> >>> <dep:version>2.5.6</dep:version> >>> <dep:type>jar</dep:type> >>> </dep:dependency> >>> <dep:dependency> >>> <dep:groupId>org.springframework</dep:groupId> >>> <dep:artifactId>spring-aop</dep:artifactId> >>> <dep:version>2.5.6</dep:version> >>> <dep:type>jar</dep:type> >>> </dep:dependency> >>> <dep:dependency> >>> <dep:groupId>org.springframework</dep:groupId> >>> <dep:artifactId>spring-tx</dep:artifactId> >>> <dep:version>2.5.6</dep:version> >>> <dep:type>jar</dep:type> >>> </dep:dependency> >>> <dep:dependency> >>> <dep:groupId>org.springframework</dep:groupId> >>> <dep:artifactId>spring</dep:artifactId> >>> <dep:version>2.5.6</dep:version> >>> <dep:type>jar</dep:type> >>> </dep:dependency> >>> <dep:dependency> >>> <dep:groupId>org.apache.geronimo.configs</dep:groupId> >>> <dep:artifactId>activemq-ra</dep:artifactId> >>> <dep:version>2.1.3</dep:version> >>> <dep:type>car</dep:type> >>> </dep:dependency> >>> </dep:dependencies> >>> <dep:hidden-classes> >>> <dep:filter>org.springframework.</dep:filter> >>> <dep:filter>META-INF/spring</dep:filter> >>> </dep:hidden-classes> >>> </dep:environment> >>> <web:context-root>/trainunion/realtime</web:context-root> >>> </web:web-app> >>> >>> ----------------------------------------------------- Log when deploy >>> ------------------------------------------- >>> Geronimo Application Server started >>> INFO RMI TCP Connection(39)-169.254.167.193 >>> org.apache.geronimo.deployment.DeploymentContext - The Strict Manifest >>> Classpath processing mode is in effect. >>> This option can be altered by specifying >>> -DXorg.apache.geronimo.deployment.LenientMFCP=true|false >>> Specify ="true" for more lenient processing such as ignoring missing >>> jars and references that are not spec compliant. >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.springframework.web.context.ContextLoader - Root >>> WebApplicationContext: initialization started >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.springframework.web.context.support.XmlWebApplicationContext - >>> Refreshing >>> org.springframework.web.context.support.xmlwebapplicationcont...@143363: >>> display name [Root WebApplicationContext]; startup date [Tue May 05 >>> 20:13:11 EEST 2009]; root of context hierarchy >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader - >>> Loading XML bean definitions from ServletContext resource >>> [/WEB-INF/applicationContext.xml] >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.springframework.web.context.support.XmlWebApplicationContext - >>> Bean factory for application context >>> [org.springframework.web.context.support.xmlwebapplicationcont...@143363]: >>> org.springframework.beans.factory.support.defaultlistablebeanfact...@bc80fa >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.springframework.web.context.support.XmlWebApplicationContext - >>> Bean 'agent' is not eligible for getting processed by all >>> BeanPostProcessors (for example: not eligible for auto-proxying) >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.apache.camel.impl.DefaultCamelContext - JMX enabled. Using >>> InstrumentationLifecycleStrategy. >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.springframework.web.context.support.XmlWebApplicationContext - >>> Bean 'com.iba.trainunion.trainlist.camel.RoutingConfiguration' is not >>> eligible for getting processed by all BeanPostProcessors (for example: >>> not eligible for auto-proxying) >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> com.iba.trainunion.trainlist.camel.RoutingConfiguration - Listing >>> components.. >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> com.iba.trainunion.trainlist.camel.RoutingConfiguration - spring-event >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> com.iba.trainunion.trainlist.camel.RoutingConfiguration - Listing >>> endpoints... >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.springframework.web.context.support.XmlWebApplicationContext - >>> Bean 'camel' is not eligible for getting processed by all >>> BeanPostProcessors (for example: not eligible for auto-proxying) >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.springframework.web.context.support.XmlWebApplicationContext - >>> Bean 'camel' is not eligible for getting processed by all >>> BeanPostProcessors (for example: not eligible for auto-proxying) >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.springframework.beans.factory.support.DefaultListableBeanFactory - >>> Pre-instantiating singletons in >>> org.springframework.beans.factory.support.defaultlistablebeanfact...@bc80fa: >>> defining beans >>> [org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,agent,camel:beanPostProcessor,camel,jms,activemq]; >>> root of factory hierarchy >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.0-M1 >>> (CamelContext:camel) is starting >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.apache.camel.management.DefaultInstrumentationAgent - JMX >>> Connector thread started and listening at: >>> service:jmx:rmi:///jndi/rmi://perez_a:1099/jmxrmi/camel >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.0-M1 >>> (CamelContext:camel) started >>> INFO RMI TCP Connection(40)-169.254.167.193 >>> org.springframework.web.context.ContextLoader - Root >>> WebApplicationContext: initialization completed in 2026 ms >>> >>> >>> >>> Best regards, >>> ~ Xasima Xirohata ~ >>> >> >> >> >> -- >> Claus Ibsen >> Apache Camel Committer >> >> Open Source Integration: http://fusesource.com >> Blog: http://davsclaus.blogspot.com/ >> Twitter: http://twitter.com/davsclaus >> Apache Camel Reference Card: >> http://refcardz.dzone.com/refcardz/enterprise-integration >> Interview with me: >> http://architects.dzone.com/articles/interview-claus-ibsen-about?mz=7893-progress >> > > > > -- > Best regards, > ~ Xasima Xirohata ~ > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus Apache Camel Reference Card: http://refcardz.dzone.com/refcardz/enterprise-integration Interview with me: http://architects.dzone.com/articles/interview-claus-ibsen-about?mz=7893-progress