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.

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 ~

Reply via email to