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

Reply via email to