Sorry, it's not the NPE inside camel or geronimo. I mean none of the
@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;
has been injected, so all producer* are null, when I just try to use
them from Servet / Restlet in the manner
@Path("/")
public class SimpleResource {
@GET
public Response test() {
new SimpleProducer().produceMessage();
return Response.ok("<div>test</div>",
MediaType.TEXT_HTML).build();
}
}
To avoid NPE i just place
if(producer!=null)
{producer.sendBody("<message>test</message>");log.info("ok1"); };
and you can see from the log that no logging are fired here.
It's also strange to me that Listing endpoints in the RouteBuilder
doesn't produce any endpoint
log.info("Listing components..");
for (String e : getContext().getComponentNames())
log.info(e);
log.info("Listing endpoints...");
for (Endpoint e : getContext().getEndpoints())
log.info(e);
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...
I have expected that either jms or activemq would be listed (as
endpoints / component). But only spring-event are shown.
I suspect that I something miss in the configuration, but
applicationContext.xml is processed and nothing more precise I have
found at camel site to find out for geronimo - camel integration for
this case.
On Wed, May 6, 2009 at 6:08 AM, Claus Ibsen <[email protected]> wrote:
> Hi
>
> Can you show the NPE stacktrace?
> And which producer is it that causes the NPE?
>
>
> On Tue, May 5, 2009 at 7:15 PM, Xasima Xirohata <[email protected]> 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 ~