Spring boot gives null pointer in xml based camel configutaions

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Spring boot gives null pointer in xml based camel configutaions

Mohit Sharma

Hi All,

My name is Mohit and I am working with EVRY AS Norway<https://www.evry.com/> .

I am trying to upgraded existing Spring application based web application running on jetty to Spring boot. I have updated dependencies (respective pom's).

Now when I am running jetty, it give error for camel related configuration, ex of camel configuration which is working on spring

Context file with camel configurations :

<?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:util="http://www.springframework.org/schema/util"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                              http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
                              http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
                              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="notificationService" class="com.edb.payment.pays.core.pwh.service.notification.NotificationServiceImpl"/>
    <context:component-scan base-package="com.edb.payment.pays.core.pwh.service.notification.mapper"/>

         <bean id="notificationServiceDestinationResolver"
               class="com.edb.finance.common.spring.jms.support.WmqDestinationResolver">
             <property name="targetClient">
                 <util:constant static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_TARGET_DEST_MQ"/>
             </property>
             <property name="encoding">
                 <util:constant static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_ENCODING_NATIVE"/>
             </property>
             <property name="ccsid" value="${notification.internal.mq.ccsid:1208}"/>
             <property name="baseQueueManagerName" value="${nmq.mq.queueManager}"/>
         </bean>

         <camel:camelContext id="notificationServiceCamelContext" useMDCLogging="true">

             <camel:endpoint id="notificationServiceQueue" uri="jms:queue:{{notification.internal.mq.queueName}}?connectionFactory=#NMQServiceCacheConnectionFactory&amp;destinationResolver=#notificationServiceDestinationResolver&amp;disableTimeToLive=true&amp;deliveryPersistent=true&amp;explicitQosEnabled=true&amp;disableReplyTo=true&amp;exchangePattern=InOnly"/>

             <camel:route id="cpsAdviceStatusReportServiceRoute">
                 <camel:from uri="seda:notificationRoute"/>
                 <camel:convertBodyTo type="com.evry.notification.message.v1.NotificationMessage"/>
                 <camel:marshal>
                     <camel:jaxb prettyPrint="true" encoding="{{file.encoding.utf}}"
                                 contextPath="com.evry.notification.message.v1"/>
                 </camel:marshal>
                 <camel:convertBodyTo type="java.lang.String"/>
                 <camel:log logName="MESSAGE_TRACE" loggingLevel="INFO"
                            message="NOTIFICATION_SERVICE: headers= ${headers}, body= ${body}"/>
                 <camel:to ref="notificationServiceQueue"/>
             </camel:route>

         </camel:camelContext>

</beans>

Error as :

Error creating bean with name 'notificationService' defined in URL [file:/D:/mohit/code/pin-server/pays-core/pays-core-pi-service/target/classes/spring/pwh-notification-service-context.xml]: Initialization of bean failed; nested exception is org.apache.camel.spring.GenericBeansException: Error post processing bean: notificationService; nested exception is java.lang.NullPointerException
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
    ... 184 more
Caused by: org.apache.camel.spring.GenericBeansException: Error post processing bean: notificationService; nested exception is java.lang.NullPointerException
    at org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:159)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    ... 194 more
Caused by: java.lang.NullPointerException
    at org.apache.camel.impl.CamelPostProcessorHelper.matchContext(CamelPostProcessorHelper.java:85)
    at org.apache.camel.impl.DefaultCamelBeanPostProcessor$1.doWith(DefaultCamelBeanPostProcessor.java:185)
    at org.apache.camel.util.ReflectionHelper.doWithFields(ReflectionHelper.java:74)
    at org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFields(DefaultCamelBeanPostProcessor.java:167)
    at org.apache.camel.impl.DefaultCamelBeanPostProcessor.postProcessBeforeInitialization(DefaultCamelBeanPostProcessor.java:82)
    at org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:153)
    ... 197 more
[INFO] Started ServerConnector@6847dfe8{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}<mailto:ServerConnector@6847dfe8%7bHTTP/1.1,%5bhttp/1.1%5d%7d%7b0.0.0.0:8080%7d>
[INFO] Started @96732ms
[INFO] Started Jetty Server

Process finished with exit code -1


Can please suggest me is there any problem with spring boot and this xml based configurations ? or do we need to take care something else as well ??

I have tried number of ways to fix this but nothing works .. so I decided to ask you , sorry for trouble , hope I will get some suggestions here.

Also I tried to subscribe for your groups but that failed.


Regards,
Mohit Sharma



Sensitivity: Internal
Regards, Mohit Sharma
Reply | Threaded
Open this post in threaded view
|

Re: Spring boot gives null pointer in xml based camel configutaions

Claus Ibsen-2
Hi

What version of Camel do you use?

And how do you run this in Jetty / Spring-Boot its a bit unclear what
you say what you are migrating from/to etc.
Do you package it as a .war file and drop into Jetty. And if so have
you setup any web.xml to bootstrap spring or something?

And try with newer Camel version if you have not.


On Sun, Jun 24, 2018 at 9:44 PM, Mohit Sharma <[hidden email]> wrote:

>
> Hi All,
>
> My name is Mohit and I am working with EVRY AS Norway<https://www.evry.com/> .
>
> I am trying to upgraded existing Spring application based web application running on jetty to Spring boot. I have updated dependencies (respective pom's).
>
> Now when I am running jetty, it give error for camel related configuration, ex of camel configuration which is working on spring
>
> Context file with camel configurations :
>
> <?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:util="http://www.springframework.org/schema/util"
>        xmlns:context="http://www.springframework.org/schema/context"
>        xmlns:camel="http://camel.apache.org/schema/spring"
>        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
>                               http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
>                               http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
>                               http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
>
>     <bean id="notificationService" class="com.edb.payment.pays.core.pwh.service.notification.NotificationServiceImpl"/>
>     <context:component-scan base-package="com.edb.payment.pays.core.pwh.service.notification.mapper"/>
>
>          <bean id="notificationServiceDestinationResolver"
>                class="com.edb.finance.common.spring.jms.support.WmqDestinationResolver">
>              <property name="targetClient">
>                  <util:constant static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_TARGET_DEST_MQ"/>
>              </property>
>              <property name="encoding">
>                  <util:constant static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_ENCODING_NATIVE"/>
>              </property>
>              <property name="ccsid" value="${notification.internal.mq.ccsid:1208}"/>
>              <property name="baseQueueManagerName" value="${nmq.mq.queueManager}"/>
>          </bean>
>
>          <camel:camelContext id="notificationServiceCamelContext" useMDCLogging="true">
>
>              <camel:endpoint id="notificationServiceQueue" uri="jms:queue:{{notification.internal.mq.queueName}}?connectionFactory=#NMQServiceCacheConnectionFactory&amp;destinationResolver=#notificationServiceDestinationResolver&amp;disableTimeToLive=true&amp;deliveryPersistent=true&amp;explicitQosEnabled=true&amp;disableReplyTo=true&amp;exchangePattern=InOnly"/>
>
>              <camel:route id="cpsAdviceStatusReportServiceRoute">
>                  <camel:from uri="seda:notificationRoute"/>
>                  <camel:convertBodyTo type="com.evry.notification.message.v1.NotificationMessage"/>
>                  <camel:marshal>
>                      <camel:jaxb prettyPrint="true" encoding="{{file.encoding.utf}}"
>                                  contextPath="com.evry.notification.message.v1"/>
>                  </camel:marshal>
>                  <camel:convertBodyTo type="java.lang.String"/>
>                  <camel:log logName="MESSAGE_TRACE" loggingLevel="INFO"
>                             message="NOTIFICATION_SERVICE: headers= ${headers}, body= ${body}"/>
>                  <camel:to ref="notificationServiceQueue"/>
>              </camel:route>
>
>          </camel:camelContext>
>
> </beans>
>
> Error as :
>
> Error creating bean with name 'notificationService' defined in URL [file:/D:/mohit/code/pin-server/pays-core/pays-core-pi-service/target/classes/spring/pwh-notification-service-context.xml]: Initialization of bean failed; nested exception is org.apache.camel.spring.GenericBeansException: Error post processing bean: notificationService; nested exception is java.lang.NullPointerException
>     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
>     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
>     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
>     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
>     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
>     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
>     at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
>     at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
>     at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
>     at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
>     at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
>     ... 184 more
> Caused by: org.apache.camel.spring.GenericBeansException: Error post processing bean: notificationService; nested exception is java.lang.NullPointerException
>     at org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:159)
>     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
>     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
>     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
>     ... 194 more
> Caused by: java.lang.NullPointerException
>     at org.apache.camel.impl.CamelPostProcessorHelper.matchContext(CamelPostProcessorHelper.java:85)
>     at org.apache.camel.impl.DefaultCamelBeanPostProcessor$1.doWith(DefaultCamelBeanPostProcessor.java:185)
>     at org.apache.camel.util.ReflectionHelper.doWithFields(ReflectionHelper.java:74)
>     at org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFields(DefaultCamelBeanPostProcessor.java:167)
>     at org.apache.camel.impl.DefaultCamelBeanPostProcessor.postProcessBeforeInitialization(DefaultCamelBeanPostProcessor.java:82)
>     at org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:153)
>     ... 197 more
> [INFO] Started ServerConnector@6847dfe8{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}<mailto:ServerConnector@6847dfe8%7bHTTP/1.1,%5bhttp/1.1%5d%7d%7b0.0.0.0:8080%7d>
> [INFO] Started @96732ms
> [INFO] Started Jetty Server
>
> Process finished with exit code -1
>
>
> Can please suggest me is there any problem with spring boot and this xml based configurations ? or do we need to take care something else as well ??
>
> I have tried number of ways to fix this but nothing works .. so I decided to ask you , sorry for trouble , hope I will get some suggestions here.
>
> Also I tried to subscribe for your groups but that failed.
>
>
> Regards,
> Mohit Sharma
>
>
>
> Sensitivity: Internal



--
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2
Reply | Threaded
Open this post in threaded view
|

Re: Spring boot gives null pointer in xml based camel configutaions

Claus Ibsen-2
In reply to this post by Mohit Sharma
Hi

Its a bit confusing what you do. Are you really packaging spring-boot
inside a WAR file and then deploying that to Jetty?
If so this is wrong. Spring Boot is a standalone runtime which you
should not embed in others.


On Sun, Jun 24, 2018 at 9:44 PM, Mohit Sharma <[hidden email]> wrote:

>
> Hi All,
>
> My name is Mohit and I am working with EVRY AS Norway<https://www.evry.com/> .
>
> I am trying to upgraded existing Spring application based web application running on jetty to Spring boot. I have updated dependencies (respective pom's).
>
> Now when I am running jetty, it give error for camel related configuration, ex of camel configuration which is working on spring
>
> Context file with camel configurations :
>
> <?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:util="http://www.springframework.org/schema/util"
>        xmlns:context="http://www.springframework.org/schema/context"
>        xmlns:camel="http://camel.apache.org/schema/spring"
>        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
>                               http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
>                               http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
>                               http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
>
>     <bean id="notificationService" class="com.edb.payment.pays.core.pwh.service.notification.NotificationServiceImpl"/>
>     <context:component-scan base-package="com.edb.payment.pays.core.pwh.service.notification.mapper"/>
>
>          <bean id="notificationServiceDestinationResolver"
>                class="com.edb.finance.common.spring.jms.support.WmqDestinationResolver">
>              <property name="targetClient">
>                  <util:constant static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_TARGET_DEST_MQ"/>
>              </property>
>              <property name="encoding">
>                  <util:constant static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_ENCODING_NATIVE"/>
>              </property>
>              <property name="ccsid" value="${notification.internal.mq.ccsid:1208}"/>
>              <property name="baseQueueManagerName" value="${nmq.mq.queueManager}"/>
>          </bean>
>
>          <camel:camelContext id="notificationServiceCamelContext" useMDCLogging="true">
>
>              <camel:endpoint id="notificationServiceQueue" uri="jms:queue:{{notification.internal.mq.queueName}}?connectionFactory=#NMQServiceCacheConnectionFactory&amp;destinationResolver=#notificationServiceDestinationResolver&amp;disableTimeToLive=true&amp;deliveryPersistent=true&amp;explicitQosEnabled=true&amp;disableReplyTo=true&amp;exchangePattern=InOnly"/>
>
>              <camel:route id="cpsAdviceStatusReportServiceRoute">
>                  <camel:from uri="seda:notificationRoute"/>
>                  <camel:convertBodyTo type="com.evry.notification.message.v1.NotificationMessage"/>
>                  <camel:marshal>
>                      <camel:jaxb prettyPrint="true" encoding="{{file.encoding.utf}}"
>                                  contextPath="com.evry.notification.message.v1"/>
>                  </camel:marshal>
>                  <camel:convertBodyTo type="java.lang.String"/>
>                  <camel:log logName="MESSAGE_TRACE" loggingLevel="INFO"
>                             message="NOTIFICATION_SERVICE: headers= ${headers}, body= ${body}"/>
>                  <camel:to ref="notificationServiceQueue"/>
>              </camel:route>
>
>          </camel:camelContext>
>
> </beans>
>
> Error as :
>
> Error creating bean with name 'notificationService' defined in URL [file:/D:/mohit/code/pin-server/pays-core/pays-core-pi-service/target/classes/spring/pwh-notification-service-context.xml]: Initialization of bean failed; nested exception is org.apache.camel.spring.GenericBeansException: Error post processing bean: notificationService; nested exception is java.lang.NullPointerException
>     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
>     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
>     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
>     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
>     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
>     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
>     at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
>     at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
>     at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
>     at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
>     at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
>     ... 184 more
> Caused by: org.apache.camel.spring.GenericBeansException: Error post processing bean: notificationService; nested exception is java.lang.NullPointerException
>     at org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:159)
>     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
>     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
>     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
>     ... 194 more
> Caused by: java.lang.NullPointerException
>     at org.apache.camel.impl.CamelPostProcessorHelper.matchContext(CamelPostProcessorHelper.java:85)
>     at org.apache.camel.impl.DefaultCamelBeanPostProcessor$1.doWith(DefaultCamelBeanPostProcessor.java:185)
>     at org.apache.camel.util.ReflectionHelper.doWithFields(ReflectionHelper.java:74)
>     at org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFields(DefaultCamelBeanPostProcessor.java:167)
>     at org.apache.camel.impl.DefaultCamelBeanPostProcessor.postProcessBeforeInitialization(DefaultCamelBeanPostProcessor.java:82)
>     at org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:153)
>     ... 197 more
> [INFO] Started ServerConnector@6847dfe8{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}<mailto:ServerConnector@6847dfe8%7bHTTP/1.1,%5bhttp/1.1%5d%7d%7b0.0.0.0:8080%7d>
> [INFO] Started @96732ms
> [INFO] Started Jetty Server
>
> Process finished with exit code -1
>
>
> Can please suggest me is there any problem with spring boot and this xml based configurations ? or do we need to take care something else as well ??
>
> I have tried number of ways to fix this but nothing works .. so I decided to ask you , sorry for trouble , hope I will get some suggestions here.
>
> Also I tried to subscribe for your groups but that failed.
>
>
> Regards,
> Mohit Sharma
>
>
>
> Sensitivity: Internal



--
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2
Reply | Threaded
Open this post in threaded view
|

Re: Spring boot gives null pointer in xml based camel configutaions

Doug Douglass-3
On Wed, Jun 27, 2018 at 12:18 AM Claus Ibsen <[hidden email]> wrote:

> Hi
>
> Its a bit confusing what you do. Are you really packaging spring-boot
> inside a WAR file and then deploying that to Jetty?
> If so this is wrong. Spring Boot is a standalone runtime which you
> should not embed in others.
>

While perhaps not directly related to the users NPE problem...

It is not "wrong" to package a Spring Boot-based app as a WAR and deploy to
a container, though it certainly isn't the usual way.

On a recent project (ended last year) using Spring Boot 1.5.4.RELEASE and
Camel 2.19.1, the deployment environment dictated WARs deployed to Tomcat
servers. This required changing the packaging in the POM to war, setting
the spring-boot-starter-tomcat dependency to provided so as not to include
conflicting tomcat classes in the WARs, and modifying the application
classes as follows:

@SpringBootApplication
public class MyApplication
extends SpringBootServletInitializer {
public static void main(String[] args) {
ApplicationContext applicationContext = new SpringApplication(MyApplication
.class).run(args);
CamelSpringBootApplicationController applicationController =
applicationContext.getBean(CamelSpringBootApplicationController.class);
applicationController.run();
}

@Override
        protected SpringApplicationBuilder
configure(SpringApplicationBuilder builder) {
               builder.sources(MyApplication.class);
               return builder;
        }

...
}

The main method allows running the application from Eclipse/STS or the
spring-boot maven plugin. Extending SpringBootServletInitializer and
overriding configure() allows the app to initialize correctly when deployed
to a container. Note that all the applications used Java config for both
Spring and Camel routes.

YMMV if using Spring Boot 2


>
> On Sun, Jun 24, 2018 at 9:44 PM, Mohit Sharma <[hidden email]>
> wrote:
> >
> > Hi All,
> >
> > My name is Mohit and I am working with EVRY AS Norway<
> https://www.evry.com/> .
> >
> > I am trying to upgraded existing Spring application based web
> application running on jetty to Spring boot. I have updated dependencies
> (respective pom's).
> >
> > Now when I am running jetty, it give error for camel related
> configuration, ex of camel configuration which is working on spring
> >
> > Context file with camel configurations :
> >
> > <?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:util="http://www.springframework.org/schema/util"
> >        xmlns:context="http://www.springframework.org/schema/context"
> >        xmlns:camel="http://camel.apache.org/schema/spring"
> >        xsi:schemaLocation="http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> >                               http://www.springframework.org/schema/util
> http://www.springframework.org/schema/util/spring-util.xsd
> >                               http://camel.apache.org/schema/spring
> http://camel.apache.org/schema/spring/camel-spring.xsd
> >
> http://www.springframework.org/schema/context
> http://www.springframework.org/schema/context/spring-context.xsd">
> >
> >     <bean id="notificationService"
> class="com.edb.payment.pays.core.pwh.service.notification.NotificationServiceImpl"/>
> >     <context:component-scan
> base-package="com.edb.payment.pays.core.pwh.service.notification.mapper"/>
> >
> >          <bean id="notificationServiceDestinationResolver"
> >
> class="com.edb.finance.common.spring.jms.support.WmqDestinationResolver">
> >              <property name="targetClient">
> >                  <util:constant
> static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_TARGET_DEST_MQ"/>
> >              </property>
> >              <property name="encoding">
> >                  <util:constant
> static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_ENCODING_NATIVE"/>
> >              </property>
> >              <property name="ccsid"
> value="${notification.internal.mq.ccsid:1208}"/>
> >              <property name="baseQueueManagerName"
> value="${nmq.mq.queueManager}"/>
> >          </bean>
> >
> >          <camel:camelContext id="notificationServiceCamelContext"
> useMDCLogging="true">
> >
> >              <camel:endpoint id="notificationServiceQueue"
> uri="jms:queue:{{notification.internal.mq.queueName}}?connectionFactory=#NMQServiceCacheConnectionFactory&amp;destinationResolver=#notificationServiceDestinationResolver&amp;disableTimeToLive=true&amp;deliveryPersistent=true&amp;explicitQosEnabled=true&amp;disableReplyTo=true&amp;exchangePattern=InOnly"/>
> >
> >              <camel:route id="cpsAdviceStatusReportServiceRoute">
> >                  <camel:from uri="seda:notificationRoute"/>
> >                  <camel:convertBodyTo
> type="com.evry.notification.message.v1.NotificationMessage"/>
> >                  <camel:marshal>
> >                      <camel:jaxb prettyPrint="true"
> encoding="{{file.encoding.utf}}"
> >
> contextPath="com.evry.notification.message.v1"/>
> >                  </camel:marshal>
> >                  <camel:convertBodyTo type="java.lang.String"/>
> >                  <camel:log logName="MESSAGE_TRACE" loggingLevel="INFO"
> >                             message="NOTIFICATION_SERVICE: headers=
> ${headers}, body= ${body}"/>
> >                  <camel:to ref="notificationServiceQueue"/>
> >              </camel:route>
> >
> >          </camel:camelContext>
> >
> > </beans>
> >
> > Error as :
> >
> > Error creating bean with name 'notificationService' defined in URL
> [file:/D:/mohit/code/pin-server/pays-core/pays-core-pi-service/target/classes/spring/pwh-notification-service-context.xml]:
> Initialization of bean failed; nested exception is
> org.apache.camel.spring.GenericBeansException: Error post processing bean:
> notificationService; nested exception is java.lang.NullPointerException
> >     at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
> >     at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
> >     at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
> >     at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
> >     at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
> >     at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
> >     at
> org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
> >     at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
> >     at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
> >     at
> org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
> >     at
> org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
> >     ... 184 more
> > Caused by: org.apache.camel.spring.GenericBeansException: Error post
> processing bean: notificationService; nested exception is
> java.lang.NullPointerException
> >     at
> org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:159)
> >     at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
> >     at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
> >     at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
> >     ... 194 more
> > Caused by: java.lang.NullPointerException
> >     at
> org.apache.camel.impl.CamelPostProcessorHelper.matchContext(CamelPostProcessorHelper.java:85)
> >     at
> org.apache.camel.impl.DefaultCamelBeanPostProcessor$1.doWith(DefaultCamelBeanPostProcessor.java:185)
> >     at
> org.apache.camel.util.ReflectionHelper.doWithFields(ReflectionHelper.java:74)
> >     at
> org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFields(DefaultCamelBeanPostProcessor.java:167)
> >     at
> org.apache.camel.impl.DefaultCamelBeanPostProcessor.postProcessBeforeInitialization(DefaultCamelBeanPostProcessor.java:82)
> >     at
> org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:153)
> >     ... 197 more
> > [INFO] Started ServerConnector@6847dfe8{HTTP/1.1,[http/1.1]}{
> 0.0.0.0:8080}<mailto:ServerConnector@6847dfe8
> %7bHTTP/1.1,%5bhttp/1.1%5d%7d%7b0.0.0.0:8080%7d>
> > [INFO] Started @96732ms
> > [INFO] Started Jetty Server
> >
> > Process finished with exit code -1
> >
> >
> > Can please suggest me is there any problem with spring boot and this xml
> based configurations ? or do we need to take care something else as well ??
> >
> > I have tried number of ways to fix this but nothing works .. so I
> decided to ask you , sorry for trouble , hope I will get some suggestions
> here.
> >
> > Also I tried to subscribe for your groups but that failed.
> >
> >
> > Regards,
> > Mohit Sharma
> >
> >
> >
> > Sensitivity: Internal
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>
Reply | Threaded
Open this post in threaded view
|

Re: Spring boot gives null pointer in xml based camel configutaions

David J. M. Karlsen
No - it is not wrong to create .war's:
https://docs.spring.io/spring-boot/docs/1.5.14.RELEASE/reference/htmlsingle/#howto-create-a-deployable-war-file
- but not the most common deployment model.

Anyway - we're drifting away from the original problem which is the NPE in
the CamelBeanPostProcessor.postProcessBeforeInitialization(
CamelBeanPostProcessor.java:159).

There seems to be others that have the very same problem:
https://medium.freecodecamp.org/configure-multiple-camel-context-in-spring-boot-application-d3a16396266

From http://camel.apache.org/spring-boot.html,  "Adding XML Routes",  there
seems to possible to load xml-based routes from a common place - but these
are *routes* not contexts.
This is a vanilla spring+camel app which is being migrated to boot+camel

Is it safe to say that multiple *Camel Contexts* is not supported when
using boot? Is it by design or should an issue be opened?
The way to migrate this is maybe to try to remove the camel context parts,
and be left with the xml-based routes and follow the pattern in "Adding XML
routes" as described above?


Den ons. 27. jun. 2018 kl. 17:18 skrev Doug Douglass <
[hidden email]>:

> On Wed, Jun 27, 2018 at 12:18 AM Claus Ibsen <[hidden email]>
> wrote:
>
> > Hi
> >
> > Its a bit confusing what you do. Are you really packaging spring-boot
> > inside a WAR file and then deploying that to Jetty?
> > If so this is wrong. Spring Boot is a standalone runtime which you
> > should not embed in others.
> >
>
> While perhaps not directly related to the users NPE problem...
>
> It is not "wrong" to package a Spring Boot-based app as a WAR and deploy to
> a container, though it certainly isn't the usual way.
>
> On a recent project (ended last year) using Spring Boot 1.5.4.RELEASE and
> Camel 2.19.1, the deployment environment dictated WARs deployed to Tomcat
> servers. This required changing the packaging in the POM to war, setting
> the spring-boot-starter-tomcat dependency to provided so as not to include
> conflicting tomcat classes in the WARs, and modifying the application
> classes as follows:
>
> @SpringBootApplication
> public class MyApplication
> extends SpringBootServletInitializer {
> public static void main(String[] args) {
> ApplicationContext applicationContext = new SpringApplication(MyApplication
> .class).run(args);
> CamelSpringBootApplicationController applicationController =
> applicationContext.getBean(CamelSpringBootApplicationController.class);
> applicationController.run();
> }
>
> @Override
>         protected SpringApplicationBuilder
> configure(SpringApplicationBuilder builder) {
>                builder.sources(MyApplication.class);
>                return builder;
>         }
>
> ...
> }
>
> The main method allows running the application from Eclipse/STS or the
> spring-boot maven plugin. Extending SpringBootServletInitializer and
> overriding configure() allows the app to initialize correctly when deployed
> to a container. Note that all the applications used Java config for both
> Spring and Camel routes.
>
> YMMV if using Spring Boot 2
>
>
> >
> > On Sun, Jun 24, 2018 at 9:44 PM, Mohit Sharma <[hidden email]>
> > wrote:
> > >
> > > Hi All,
> > >
> > > My name is Mohit and I am working with EVRY AS Norway<
> > https://www.evry.com/> .
> > >
> > > I am trying to upgraded existing Spring application based web
> > application running on jetty to Spring boot. I have updated dependencies
> > (respective pom's).
> > >
> > > Now when I am running jetty, it give error for camel related
> > configuration, ex of camel configuration which is working on spring
> > >
> > > Context file with camel configurations :
> > >
> > > <?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:util="http://www.springframework.org/schema/util"
> > >        xmlns:context="http://www.springframework.org/schema/context"
> > >        xmlns:camel="http://camel.apache.org/schema/spring"
> > >        xsi:schemaLocation="http://www.springframework.org/schema/beans
> > http://www.springframework.org/schema/beans/spring-beans.xsd
> > >
> http://www.springframework.org/schema/util
> > http://www.springframework.org/schema/util/spring-util.xsd
> > >                               http://camel.apache.org/schema/spring
> > http://camel.apache.org/schema/spring/camel-spring.xsd
> > >
> > http://www.springframework.org/schema/context
> > http://www.springframework.org/schema/context/spring-context.xsd">
> > >
> > >     <bean id="notificationService"
> >
> class="com.edb.payment.pays.core.pwh.service.notification.NotificationServiceImpl"/>
> > >     <context:component-scan
> >
> base-package="com.edb.payment.pays.core.pwh.service.notification.mapper"/>
> > >
> > >          <bean id="notificationServiceDestinationResolver"
> > >
> > class="com.edb.finance.common.spring.jms.support.WmqDestinationResolver">
> > >              <property name="targetClient">
> > >                  <util:constant
> > static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_TARGET_DEST_MQ"/>
> > >              </property>
> > >              <property name="encoding">
> > >                  <util:constant
> > static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_ENCODING_NATIVE"/>
> > >              </property>
> > >              <property name="ccsid"
> > value="${notification.internal.mq.ccsid:1208}"/>
> > >              <property name="baseQueueManagerName"
> > value="${nmq.mq.queueManager}"/>
> > >          </bean>
> > >
> > >          <camel:camelContext id="notificationServiceCamelContext"
> > useMDCLogging="true">
> > >
> > >              <camel:endpoint id="notificationServiceQueue"
> >
> uri="jms:queue:{{notification.internal.mq.queueName}}?connectionFactory=#NMQServiceCacheConnectionFactory&amp;destinationResolver=#notificationServiceDestinationResolver&amp;disableTimeToLive=true&amp;deliveryPersistent=true&amp;explicitQosEnabled=true&amp;disableReplyTo=true&amp;exchangePattern=InOnly"/>
> > >
> > >              <camel:route id="cpsAdviceStatusReportServiceRoute">
> > >                  <camel:from uri="seda:notificationRoute"/>
> > >                  <camel:convertBodyTo
> > type="com.evry.notification.message.v1.NotificationMessage"/>
> > >                  <camel:marshal>
> > >                      <camel:jaxb prettyPrint="true"
> > encoding="{{file.encoding.utf}}"
> > >
> > contextPath="com.evry.notification.message.v1"/>
> > >                  </camel:marshal>
> > >                  <camel:convertBodyTo type="java.lang.String"/>
> > >                  <camel:log logName="MESSAGE_TRACE" loggingLevel="INFO"
> > >                             message="NOTIFICATION_SERVICE: headers=
> > ${headers}, body= ${body}"/>
> > >                  <camel:to ref="notificationServiceQueue"/>
> > >              </camel:route>
> > >
> > >          </camel:camelContext>
> > >
> > > </beans>
> > >
> > > Error as :
> > >
> > > Error creating bean with name 'notificationService' defined in URL
> >
> [file:/D:/mohit/code/pin-server/pays-core/pays-core-pi-service/target/classes/spring/pwh-notification-service-context.xml]:
> > Initialization of bean failed; nested exception is
> > org.apache.camel.spring.GenericBeansException: Error post processing
> bean:
> > notificationService; nested exception is java.lang.NullPointerException
> > >     at
> >
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
> > >     at
> >
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
> > >     at
> >
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
> > >     at
> >
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
> > >     at
> >
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
> > >     at
> >
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
> > >     at
> >
> org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
> > >     at
> >
> org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
> > >     at
> >
> org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
> > >     at
> >
> org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
> > >     at
> >
> org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
> > >     ... 184 more
> > > Caused by: org.apache.camel.spring.GenericBeansException: Error post
> > processing bean: notificationService; nested exception is
> > java.lang.NullPointerException
> > >     at
> >
> org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:159)
> > >     at
> >
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
> > >     at
> >
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
> > >     at
> >
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
> > >     ... 194 more
> > > Caused by: java.lang.NullPointerException
> > >     at
> >
> org.apache.camel.impl.CamelPostProcessorHelper.matchContext(CamelPostProcessorHelper.java:85)
> > >     at
> >
> org.apache.camel.impl.DefaultCamelBeanPostProcessor$1.doWith(DefaultCamelBeanPostProcessor.java:185)
> > >     at
> >
> org.apache.camel.util.ReflectionHelper.doWithFields(ReflectionHelper.java:74)
> > >     at
> >
> org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFields(DefaultCamelBeanPostProcessor.java:167)
> > >     at
> >
> org.apache.camel.impl.DefaultCamelBeanPostProcessor.postProcessBeforeInitialization(DefaultCamelBeanPostProcessor.java:82)
> > >     at
> >
> org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:153)
> > >     ... 197 more
> > > [INFO] Started ServerConnector@6847dfe8{HTTP/1.1,[http/1.1]}{
> > 0.0.0.0:8080}<mailto:ServerConnector@6847dfe8
> > %7bHTTP/1.1,%5bhttp/1.1%5d%7d%7b0.0.0.0:8080%7d>
> > > [INFO] Started @96732ms
> > > [INFO] Started Jetty Server
> > >
> > > Process finished with exit code -1
> > >
> > >
> > > Can please suggest me is there any problem with spring boot and this
> xml
> > based configurations ? or do we need to take care something else as well
> ??
> > >
> > > I have tried number of ways to fix this but nothing works .. so I
> > decided to ask you , sorry for trouble , hope I will get some suggestions
> > here.
> > >
> > > Also I tried to subscribe for your groups but that failed.
> > >
> > >
> > > Regards,
> > > Mohit Sharma
> > >
> > >
> > >
> > > Sensitivity: Internal
> >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > http://davsclaus.com @davsclaus
> > Camel in Action 2: https://www.manning.com/ibsen2
> >
>


--
--
David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen
Reply | Threaded
Open this post in threaded view
|

Re: Spring boot gives null pointer in xml based camel configutaions

Mark Nuttall
Can you switch to Java routes instead XML? I am deploying Spring Boot Camel
Java routes as war's with no issues.

On Wed, Jun 27, 2018 at 2:09 PM, David Karlsen <[hidden email]>
wrote:

> No - it is not wrong to create .war's:
> https://docs.spring.io/spring-boot/docs/1.5.14.RELEASE/
> reference/htmlsingle/#howto-create-a-deployable-war-file
> - but not the most common deployment model.
>
> Anyway - we're drifting away from the original problem which is the NPE in
> the CamelBeanPostProcessor.postProcessBeforeInitialization(
> CamelBeanPostProcessor.java:159).
>
> There seems to be others that have the very same problem:
> https://medium.freecodecamp.org/configure-multiple-camel-
> context-in-spring-boot-application-d3a16396266
>
> From http://camel.apache.org/spring-boot.html,  "Adding XML Routes",
> there
> seems to possible to load xml-based routes from a common place - but these
> are *routes* not contexts.
> This is a vanilla spring+camel app which is being migrated to boot+camel
>
> Is it safe to say that multiple *Camel Contexts* is not supported when
> using boot? Is it by design or should an issue be opened?
> The way to migrate this is maybe to try to remove the camel context parts,
> and be left with the xml-based routes and follow the pattern in "Adding XML
> routes" as described above?
>
>
> Den ons. 27. jun. 2018 kl. 17:18 skrev Doug Douglass <
> [hidden email]>:
>
> > On Wed, Jun 27, 2018 at 12:18 AM Claus Ibsen <[hidden email]>
> > wrote:
> >
> > > Hi
> > >
> > > Its a bit confusing what you do. Are you really packaging spring-boot
> > > inside a WAR file and then deploying that to Jetty?
> > > If so this is wrong. Spring Boot is a standalone runtime which you
> > > should not embed in others.
> > >
> >
> > While perhaps not directly related to the users NPE problem...
> >
> > It is not "wrong" to package a Spring Boot-based app as a WAR and deploy
> to
> > a container, though it certainly isn't the usual way.
> >
> > On a recent project (ended last year) using Spring Boot 1.5.4.RELEASE and
> > Camel 2.19.1, the deployment environment dictated WARs deployed to Tomcat
> > servers. This required changing the packaging in the POM to war, setting
> > the spring-boot-starter-tomcat dependency to provided so as not to
> include
> > conflicting tomcat classes in the WARs, and modifying the application
> > classes as follows:
> >
> > @SpringBootApplication
> > public class MyApplication
> > extends SpringBootServletInitializer {
> > public static void main(String[] args) {
> > ApplicationContext applicationContext = new SpringApplication(
> MyApplication
> > .class).run(args);
> > CamelSpringBootApplicationController applicationController =
> > applicationContext.getBean(CamelSpringBootApplicationController.class);
> > applicationController.run();
> > }
> >
> > @Override
> >         protected SpringApplicationBuilder
> > configure(SpringApplicationBuilder builder) {
> >                builder.sources(MyApplication.class);
> >                return builder;
> >         }
> >
> > ...
> > }
> >
> > The main method allows running the application from Eclipse/STS or the
> > spring-boot maven plugin. Extending SpringBootServletInitializer and
> > overriding configure() allows the app to initialize correctly when
> deployed
> > to a container. Note that all the applications used Java config for both
> > Spring and Camel routes.
> >
> > YMMV if using Spring Boot 2
> >
> >
> > >
> > > On Sun, Jun 24, 2018 at 9:44 PM, Mohit Sharma <[hidden email]>
> > > wrote:
> > > >
> > > > Hi All,
> > > >
> > > > My name is Mohit and I am working with EVRY AS Norway<
> > > https://www.evry.com/> .
> > > >
> > > > I am trying to upgraded existing Spring application based web
> > > application running on jetty to Spring boot. I have updated
> dependencies
> > > (respective pom's).
> > > >
> > > > Now when I am running jetty, it give error for camel related
> > > configuration, ex of camel configuration which is working on spring
> > > >
> > > > Context file with camel configurations :
> > > >
> > > > <?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:util="http://www.springframework.org/schema/util"
> > > >        xmlns:context="http://www.springframework.org/schema/context"
> > > >        xmlns:camel="http://camel.apache.org/schema/spring"
> > > >        xsi:schemaLocation="http://www.springframework.org/
> schema/beans
> > > http://www.springframework.org/schema/beans/spring-beans.xsd
> > > >
> > http://www.springframework.org/schema/util
> > > http://www.springframework.org/schema/util/spring-util.xsd
> > > >                               http://camel.apache.org/schema/spring
> > > http://camel.apache.org/schema/spring/camel-spring.xsd
> > > >
> > > http://www.springframework.org/schema/context
> > > http://www.springframework.org/schema/context/spring-context.xsd">
> > > >
> > > >     <bean id="notificationService"
> > >
> > class="com.edb.payment.pays.core.pwh.service.notification.
> NotificationServiceImpl"/>
> > > >     <context:component-scan
> > >
> > base-package="com.edb.payment.pays.core.pwh.service.
> notification.mapper"/>
> > > >
> > > >          <bean id="notificationServiceDestinationResolver"
> > > >
> > > class="com.edb.finance.common.spring.jms.support.
> WmqDestinationResolver">
> > > >              <property name="targetClient">
> > > >                  <util:constant
> > > static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_
> TARGET_DEST_MQ"/>
> > > >              </property>
> > > >              <property name="encoding">
> > > >                  <util:constant
> > > static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_
> ENCODING_NATIVE"/>
> > > >              </property>
> > > >              <property name="ccsid"
> > > value="${notification.internal.mq.ccsid:1208}"/>
> > > >              <property name="baseQueueManagerName"
> > > value="${nmq.mq.queueManager}"/>
> > > >          </bean>
> > > >
> > > >          <camel:camelContext id="notificationServiceCamelContext"
> > > useMDCLogging="true">
> > > >
> > > >              <camel:endpoint id="notificationServiceQueue"
> > >
> > uri="jms:queue:{{notification.internal.mq.queueName}}?
> connectionFactory=#NMQServiceCacheConnectionFacto
> ry&amp;destinationResolver=#notificationServiceDestinationResolver&amp;
> disableTimeToLive=true&amp;deliveryPersistent=true&amp;
> explicitQosEnabled=true&amp;disableReplyTo=true&amp;
> exchangePattern=InOnly"/>
> > > >
> > > >              <camel:route id="cpsAdviceStatusReportServiceRoute">
> > > >                  <camel:from uri="seda:notificationRoute"/>
> > > >                  <camel:convertBodyTo
> > > type="com.evry.notification.message.v1.NotificationMessage"/>
> > > >                  <camel:marshal>
> > > >                      <camel:jaxb prettyPrint="true"
> > > encoding="{{file.encoding.utf}}"
> > > >
> > > contextPath="com.evry.notification.message.v1"/>
> > > >                  </camel:marshal>
> > > >                  <camel:convertBodyTo type="java.lang.String"/>
> > > >                  <camel:log logName="MESSAGE_TRACE"
> loggingLevel="INFO"
> > > >                             message="NOTIFICATION_SERVICE: headers=
> > > ${headers}, body= ${body}"/>
> > > >                  <camel:to ref="notificationServiceQueue"/>
> > > >              </camel:route>
> > > >
> > > >          </camel:camelContext>
> > > >
> > > > </beans>
> > > >
> > > > Error as :
> > > >
> > > > Error creating bean with name 'notificationService' defined in URL
> > >
> > [file:/D:/mohit/code/pin-server/pays-core/pays-core-pi-
> service/target/classes/spring/pwh-notification-service-context.xml]:
> > > Initialization of bean failed; nested exception is
> > > org.apache.camel.spring.GenericBeansException: Error post processing
> > bean:
> > > notificationService; nested exception is java.lang.NullPointerException
> > > >     at
> > >
> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
> > > >     at
> > >
> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.createBean(AbstractAutowireCapableBeanFactory.java:483)
> > > >     at
> > >
> > org.springframework.beans.factory.support.AbstractBeanFactory$1.
> getObject(AbstractBeanFactory.java:312)
> > > >     at
> > >
> > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.
> getSingleton(DefaultSingletonBeanRegistry.java:230)
> > > >     at
> > >
> > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(
> AbstractBeanFactory.java:308)
> > > >     at
> > >
> > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(
> AbstractBeanFactory.java:202)
> > > >     at
> > >
> > org.springframework.beans.factory.config.DependencyDescriptor.
> resolveCandidate(DependencyDescriptor.java:208)
> > > >     at
> > >
> > org.springframework.beans.factory.support.DefaultListableBeanFactory.
> doResolveDependency(DefaultListableBeanFactory.java:1138)
> > > >     at
> > >
> > org.springframework.beans.factory.support.DefaultListableBeanFactory.
> resolveDependency(DefaultListableBeanFactory.java:1066)
> > > >     at
> > >
> > org.springframework.beans.factory.support.ConstructorResolver.
> resolveAutowiredArgument(ConstructorResolver.java:835)
> > > >     at
> > >
> > org.springframework.beans.factory.support.ConstructorResolver.
> createArgumentArray(ConstructorResolver.java:741)
> > > >     ... 184 more
> > > > Caused by: org.apache.camel.spring.GenericBeansException: Error post
> > > processing bean: notificationService; nested exception is
> > > java.lang.NullPointerException
> > > >     at
> > >
> > org.apache.camel.spring.CamelBeanPostProcessor.
> postProcessBeforeInitialization(CamelBeanPostProcessor.java:159)
> > > >     at
> > >
> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.applyBeanPostProcessorsBeforeInitialization(
> AbstractAutowireCapableBeanFactory.java:409)
> > > >     at
> > >
> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
> > > >     at
> > >
> > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
> > > >     ... 194 more
> > > > Caused by: java.lang.NullPointerException
> > > >     at
> > >
> > org.apache.camel.impl.CamelPostProcessorHelper.matchContext(
> CamelPostProcessorHelper.java:85)
> > > >     at
> > >
> > org.apache.camel.impl.DefaultCamelBeanPostProcessor$1.doWith(
> DefaultCamelBeanPostProcessor.java:185)
> > > >     at
> > >
> > org.apache.camel.util.ReflectionHelper.doWithFields(
> ReflectionHelper.java:74)
> > > >     at
> > >
> > org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFields(
> DefaultCamelBeanPostProcessor.java:167)
> > > >     at
> > >
> > org.apache.camel.impl.DefaultCamelBeanPostProcessor.
> postProcessBeforeInitialization(DefaultCamelBeanPostProcessor.java:82)
> > > >     at
> > >
> > org.apache.camel.spring.CamelBeanPostProcessor.
> postProcessBeforeInitialization(CamelBeanPostProcessor.java:153)
> > > >     ... 197 more
> > > > [INFO] Started ServerConnector@6847dfe8{HTTP/1.1,[http/1.1]}{
> > > 0.0.0.0:8080}<mailto:ServerConnector@6847dfe8
> > > %7bHTTP/1.1,%5bhttp/1.1%5d%7d%7b0.0.0.0:8080%7d>
> > > > [INFO] Started @96732ms
> > > > [INFO] Started Jetty Server
> > > >
> > > > Process finished with exit code -1
> > > >
> > > >
> > > > Can please suggest me is there any problem with spring boot and this
> > xml
> > > based configurations ? or do we need to take care something else as
> well
> > ??
> > > >
> > > > I have tried number of ways to fix this but nothing works .. so I
> > > decided to ask you , sorry for trouble , hope I will get some
> suggestions
> > > here.
> > > >
> > > > Also I tried to subscribe for your groups but that failed.
> > > >
> > > >
> > > > Regards,
> > > > Mohit Sharma
> > > >
> > > >
> > > >
> > > > Sensitivity: Internal
> > >
> > >
> > >
> > > --
> > > Claus Ibsen
> > > -----------------
> > > http://davsclaus.com @davsclaus
> > > Camel in Action 2: https://www.manning.com/ibsen2
> > >
> >
>
>
> --
> --
> David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen
>
Reply | Threaded
Open this post in threaded view
|

Re: Spring boot gives null pointer in xml based camel configutaions

David J. M. Karlsen
Over time yes, right now we just want a working MVP with as few changes as
possible to get it bootified, then make it more bootiful, and in that
respect we have the question I posted in the last mail.

Den ons. 27. jun. 2018 kl. 20:46 skrev Mark Nuttall <[hidden email]>:

> Can you switch to Java routes instead XML? I am deploying Spring Boot Camel
> Java routes as war's with no issues.
>
> On Wed, Jun 27, 2018 at 2:09 PM, David Karlsen <[hidden email]>
> wrote:
>
> > No - it is not wrong to create .war's:
> > https://docs.spring.io/spring-boot/docs/1.5.14.RELEASE/
> > reference/htmlsingle/#howto-create-a-deployable-war-file
> > - but not the most common deployment model.
> >
> > Anyway - we're drifting away from the original problem which is the NPE
> in
> > the CamelBeanPostProcessor.postProcessBeforeInitialization(
> > CamelBeanPostProcessor.java:159).
> >
> > There seems to be others that have the very same problem:
> > https://medium.freecodecamp.org/configure-multiple-camel-
> > context-in-spring-boot-application-d3a16396266
> >
> > From http://camel.apache.org/spring-boot.html,  "Adding XML Routes",
> > there
> > seems to possible to load xml-based routes from a common place - but
> these
> > are *routes* not contexts.
> > This is a vanilla spring+camel app which is being migrated to boot+camel
> >
> > Is it safe to say that multiple *Camel Contexts* is not supported when
> > using boot? Is it by design or should an issue be opened?
> > The way to migrate this is maybe to try to remove the camel context
> parts,
> > and be left with the xml-based routes and follow the pattern in "Adding
> XML
> > routes" as described above?
> >
> >
> > Den ons. 27. jun. 2018 kl. 17:18 skrev Doug Douglass <
> > [hidden email]>:
> >
> > > On Wed, Jun 27, 2018 at 12:18 AM Claus Ibsen <[hidden email]>
> > > wrote:
> > >
> > > > Hi
> > > >
> > > > Its a bit confusing what you do. Are you really packaging spring-boot
> > > > inside a WAR file and then deploying that to Jetty?
> > > > If so this is wrong. Spring Boot is a standalone runtime which you
> > > > should not embed in others.
> > > >
> > >
> > > While perhaps not directly related to the users NPE problem...
> > >
> > > It is not "wrong" to package a Spring Boot-based app as a WAR and
> deploy
> > to
> > > a container, though it certainly isn't the usual way.
> > >
> > > On a recent project (ended last year) using Spring Boot 1.5.4.RELEASE
> and
> > > Camel 2.19.1, the deployment environment dictated WARs deployed to
> Tomcat
> > > servers. This required changing the packaging in the POM to war,
> setting
> > > the spring-boot-starter-tomcat dependency to provided so as not to
> > include
> > > conflicting tomcat classes in the WARs, and modifying the application
> > > classes as follows:
> > >
> > > @SpringBootApplication
> > > public class MyApplication
> > > extends SpringBootServletInitializer {
> > > public static void main(String[] args) {
> > > ApplicationContext applicationContext = new SpringApplication(
> > MyApplication
> > > .class).run(args);
> > > CamelSpringBootApplicationController applicationController =
> > > applicationContext.getBean(CamelSpringBootApplicationController.class);
> > > applicationController.run();
> > > }
> > >
> > > @Override
> > >         protected SpringApplicationBuilder
> > > configure(SpringApplicationBuilder builder) {
> > >                builder.sources(MyApplication.class);
> > >                return builder;
> > >         }
> > >
> > > ...
> > > }
> > >
> > > The main method allows running the application from Eclipse/STS or the
> > > spring-boot maven plugin. Extending SpringBootServletInitializer and
> > > overriding configure() allows the app to initialize correctly when
> > deployed
> > > to a container. Note that all the applications used Java config for
> both
> > > Spring and Camel routes.
> > >
> > > YMMV if using Spring Boot 2
> > >
> > >
> > > >
> > > > On Sun, Jun 24, 2018 at 9:44 PM, Mohit Sharma <[hidden email]
> >
> > > > wrote:
> > > > >
> > > > > Hi All,
> > > > >
> > > > > My name is Mohit and I am working with EVRY AS Norway<
> > > > https://www.evry.com/> .
> > > > >
> > > > > I am trying to upgraded existing Spring application based web
> > > > application running on jetty to Spring boot. I have updated
> > dependencies
> > > > (respective pom's).
> > > > >
> > > > > Now when I am running jetty, it give error for camel related
> > > > configuration, ex of camel configuration which is working on spring
> > > > >
> > > > > Context file with camel configurations :
> > > > >
> > > > > <?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:util="http://www.springframework.org/schema/util"
> > > > >        xmlns:context="
> http://www.springframework.org/schema/context"
> > > > >        xmlns:camel="http://camel.apache.org/schema/spring"
> > > > >        xsi:schemaLocation="http://www.springframework.org/
> > schema/beans
> > > > http://www.springframework.org/schema/beans/spring-beans.xsd
> > > > >
> > > http://www.springframework.org/schema/util
> > > > http://www.springframework.org/schema/util/spring-util.xsd
> > > > >
> http://camel.apache.org/schema/spring
> > > > http://camel.apache.org/schema/spring/camel-spring.xsd
> > > > >
> > > > http://www.springframework.org/schema/context
> > > > http://www.springframework.org/schema/context/spring-context.xsd">
> > > > >
> > > > >     <bean id="notificationService"
> > > >
> > > class="com.edb.payment.pays.core.pwh.service.notification.
> > NotificationServiceImpl"/>
> > > > >     <context:component-scan
> > > >
> > > base-package="com.edb.payment.pays.core.pwh.service.
> > notification.mapper"/>
> > > > >
> > > > >          <bean id="notificationServiceDestinationResolver"
> > > > >
> > > > class="com.edb.finance.common.spring.jms.support.
> > WmqDestinationResolver">
> > > > >              <property name="targetClient">
> > > > >                  <util:constant
> > > > static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_
> > TARGET_DEST_MQ"/>
> > > > >              </property>
> > > > >              <property name="encoding">
> > > > >                  <util:constant
> > > > static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_
> > ENCODING_NATIVE"/>
> > > > >              </property>
> > > > >              <property name="ccsid"
> > > > value="${notification.internal.mq.ccsid:1208}"/>
> > > > >              <property name="baseQueueManagerName"
> > > > value="${nmq.mq.queueManager}"/>
> > > > >          </bean>
> > > > >
> > > > >          <camel:camelContext id="notificationServiceCamelContext"
> > > > useMDCLogging="true">
> > > > >
> > > > >              <camel:endpoint id="notificationServiceQueue"
> > > >
> > > uri="jms:queue:{{notification.internal.mq.queueName}}?
> > connectionFactory=#NMQServiceCacheConnectionFacto
> > ry&amp;destinationResolver=#notificationServiceDestinationResolver&amp;
> > disableTimeToLive=true&amp;deliveryPersistent=true&amp;
> > explicitQosEnabled=true&amp;disableReplyTo=true&amp;
> > exchangePattern=InOnly"/>
> > > > >
> > > > >              <camel:route id="cpsAdviceStatusReportServiceRoute">
> > > > >                  <camel:from uri="seda:notificationRoute"/>
> > > > >                  <camel:convertBodyTo
> > > > type="com.evry.notification.message.v1.NotificationMessage"/>
> > > > >                  <camel:marshal>
> > > > >                      <camel:jaxb prettyPrint="true"
> > > > encoding="{{file.encoding.utf}}"
> > > > >
> > > > contextPath="com.evry.notification.message.v1"/>
> > > > >                  </camel:marshal>
> > > > >                  <camel:convertBodyTo type="java.lang.String"/>
> > > > >                  <camel:log logName="MESSAGE_TRACE"
> > loggingLevel="INFO"
> > > > >                             message="NOTIFICATION_SERVICE: headers=
> > > > ${headers}, body= ${body}"/>
> > > > >                  <camel:to ref="notificationServiceQueue"/>
> > > > >              </camel:route>
> > > > >
> > > > >          </camel:camelContext>
> > > > >
> > > > > </beans>
> > > > >
> > > > > Error as :
> > > > >
> > > > > Error creating bean with name 'notificationService' defined in URL
> > > >
> > > [file:/D:/mohit/code/pin-server/pays-core/pays-core-pi-
> > service/target/classes/spring/pwh-notification-service-context.xml]:
> > > > Initialization of bean failed; nested exception is
> > > > org.apache.camel.spring.GenericBeansException: Error post processing
> > > bean:
> > > > notificationService; nested exception is
> java.lang.NullPointerException
> > > > >     at
> > > >
> > >
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> > tory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
> > > > >     at
> > > >
> > >
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> > tory.createBean(AbstractAutowireCapableBeanFactory.java:483)
> > > > >     at
> > > >
> > > org.springframework.beans.factory.support.AbstractBeanFactory$1.
> > getObject(AbstractBeanFactory.java:312)
> > > > >     at
> > > >
> > > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.
> > getSingleton(DefaultSingletonBeanRegistry.java:230)
> > > > >     at
> > > >
> > >
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(
> > AbstractBeanFactory.java:308)
> > > > >     at
> > > >
> > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(
> > AbstractBeanFactory.java:202)
> > > > >     at
> > > >
> > > org.springframework.beans.factory.config.DependencyDescriptor.
> > resolveCandidate(DependencyDescriptor.java:208)
> > > > >     at
> > > >
> > > org.springframework.beans.factory.support.DefaultListableBeanFactory.
> > doResolveDependency(DefaultListableBeanFactory.java:1138)
> > > > >     at
> > > >
> > > org.springframework.beans.factory.support.DefaultListableBeanFactory.
> > resolveDependency(DefaultListableBeanFactory.java:1066)
> > > > >     at
> > > >
> > > org.springframework.beans.factory.support.ConstructorResolver.
> > resolveAutowiredArgument(ConstructorResolver.java:835)
> > > > >     at
> > > >
> > > org.springframework.beans.factory.support.ConstructorResolver.
> > createArgumentArray(ConstructorResolver.java:741)
> > > > >     ... 184 more
> > > > > Caused by: org.apache.camel.spring.GenericBeansException: Error
> post
> > > > processing bean: notificationService; nested exception is
> > > > java.lang.NullPointerException
> > > > >     at
> > > >
> > > org.apache.camel.spring.CamelBeanPostProcessor.
> > postProcessBeforeInitialization(CamelBeanPostProcessor.java:159)
> > > > >     at
> > > >
> > >
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> > tory.applyBeanPostProcessorsBeforeInitialization(
> > AbstractAutowireCapableBeanFactory.java:409)
> > > > >     at
> > > >
> > >
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> > tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
> > > > >     at
> > > >
> > >
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> > tory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
> > > > >     ... 194 more
> > > > > Caused by: java.lang.NullPointerException
> > > > >     at
> > > >
> > > org.apache.camel.impl.CamelPostProcessorHelper.matchContext(
> > CamelPostProcessorHelper.java:85)
> > > > >     at
> > > >
> > > org.apache.camel.impl.DefaultCamelBeanPostProcessor$1.doWith(
> > DefaultCamelBeanPostProcessor.java:185)
> > > > >     at
> > > >
> > > org.apache.camel.util.ReflectionHelper.doWithFields(
> > ReflectionHelper.java:74)
> > > > >     at
> > > >
> > > org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFields(
> > DefaultCamelBeanPostProcessor.java:167)
> > > > >     at
> > > >
> > > org.apache.camel.impl.DefaultCamelBeanPostProcessor.
> > postProcessBeforeInitialization(DefaultCamelBeanPostProcessor.java:82)
> > > > >     at
> > > >
> > > org.apache.camel.spring.CamelBeanPostProcessor.
> > postProcessBeforeInitialization(CamelBeanPostProcessor.java:153)
> > > > >     ... 197 more
> > > > > [INFO] Started ServerConnector@6847dfe8{HTTP/1.1,[http/1.1]}{
> > > > 0.0.0.0:8080}<mailto:ServerConnector@6847dfe8
> > > > %7bHTTP/1.1,%5bhttp/1.1%5d%7d%7b0.0.0.0:8080%7d>
> > > > > [INFO] Started @96732ms
> > > > > [INFO] Started Jetty Server
> > > > >
> > > > > Process finished with exit code -1
> > > > >
> > > > >
> > > > > Can please suggest me is there any problem with spring boot and
> this
> > > xml
> > > > based configurations ? or do we need to take care something else as
> > well
> > > ??
> > > > >
> > > > > I have tried number of ways to fix this but nothing works .. so I
> > > > decided to ask you , sorry for trouble , hope I will get some
> > suggestions
> > > > here.
> > > > >
> > > > > Also I tried to subscribe for your groups but that failed.
> > > > >
> > > > >
> > > > > Regards,
> > > > > Mohit Sharma
> > > > >
> > > > >
> > > > >
> > > > > Sensitivity: Internal
> > > >
> > > >
> > > >
> > > > --
> > > > Claus Ibsen
> > > > -----------------
> > > > http://davsclaus.com @davsclaus
> > > > Camel in Action 2: https://www.manning.com/ibsen2
> > > >
> > >
> >
> >
> > --
> > --
> > David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen
> >
>


--
--
David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen
Reply | Threaded
Open this post in threaded view
|

Re: Spring boot gives null pointer in xml based camel configutaions

Claus Ibsen-2
In reply to this post by David J. M. Karlsen
Multiple CamelContexts in spring boot is NOT supported, its by design
to have 1 camel context only.

If the NPE is fixed then you may hit further problems down the line as
the bean post processor have not camel context injected as it ought to
have.
You are welcome to try to patch a local source code of camel to avoid
the NPE, its just to check for camel context != null. And then see if
/ what else problems arise.

On Wed, Jun 27, 2018 at 8:09 PM, David Karlsen <[hidden email]> wrote:

> No - it is not wrong to create .war's:
> https://docs.spring.io/spring-boot/docs/1.5.14.RELEASE/reference/htmlsingle/#howto-create-a-deployable-war-file
> - but not the most common deployment model.
>
> Anyway - we're drifting away from the original problem which is the NPE in
> the CamelBeanPostProcessor.postProcessBeforeInitialization(
> CamelBeanPostProcessor.java:159).
>
> There seems to be others that have the very same problem:
> https://medium.freecodecamp.org/configure-multiple-camel-context-in-spring-boot-application-d3a16396266
>
> From http://camel.apache.org/spring-boot.html,  "Adding XML Routes",  there
> seems to possible to load xml-based routes from a common place - but these
> are *routes* not contexts.
> This is a vanilla spring+camel app which is being migrated to boot+camel
>
> Is it safe to say that multiple *Camel Contexts* is not supported when
> using boot? Is it by design or should an issue be opened?
> The way to migrate this is maybe to try to remove the camel context parts,
> and be left with the xml-based routes and follow the pattern in "Adding XML
> routes" as described above?
>
>
> Den ons. 27. jun. 2018 kl. 17:18 skrev Doug Douglass <
> [hidden email]>:
>
>> On Wed, Jun 27, 2018 at 12:18 AM Claus Ibsen <[hidden email]>
>> wrote:
>>
>> > Hi
>> >
>> > Its a bit confusing what you do. Are you really packaging spring-boot
>> > inside a WAR file and then deploying that to Jetty?
>> > If so this is wrong. Spring Boot is a standalone runtime which you
>> > should not embed in others.
>> >
>>
>> While perhaps not directly related to the users NPE problem...
>>
>> It is not "wrong" to package a Spring Boot-based app as a WAR and deploy to
>> a container, though it certainly isn't the usual way.
>>
>> On a recent project (ended last year) using Spring Boot 1.5.4.RELEASE and
>> Camel 2.19.1, the deployment environment dictated WARs deployed to Tomcat
>> servers. This required changing the packaging in the POM to war, setting
>> the spring-boot-starter-tomcat dependency to provided so as not to include
>> conflicting tomcat classes in the WARs, and modifying the application
>> classes as follows:
>>
>> @SpringBootApplication
>> public class MyApplication
>> extends SpringBootServletInitializer {
>> public static void main(String[] args) {
>> ApplicationContext applicationContext = new SpringApplication(MyApplication
>> .class).run(args);
>> CamelSpringBootApplicationController applicationController =
>> applicationContext.getBean(CamelSpringBootApplicationController.class);
>> applicationController.run();
>> }
>>
>> @Override
>>         protected SpringApplicationBuilder
>> configure(SpringApplicationBuilder builder) {
>>                builder.sources(MyApplication.class);
>>                return builder;
>>         }
>>
>> ...
>> }
>>
>> The main method allows running the application from Eclipse/STS or the
>> spring-boot maven plugin. Extending SpringBootServletInitializer and
>> overriding configure() allows the app to initialize correctly when deployed
>> to a container. Note that all the applications used Java config for both
>> Spring and Camel routes.
>>
>> YMMV if using Spring Boot 2
>>
>>
>> >
>> > On Sun, Jun 24, 2018 at 9:44 PM, Mohit Sharma <[hidden email]>
>> > wrote:
>> > >
>> > > Hi All,
>> > >
>> > > My name is Mohit and I am working with EVRY AS Norway<
>> > https://www.evry.com/> .
>> > >
>> > > I am trying to upgraded existing Spring application based web
>> > application running on jetty to Spring boot. I have updated dependencies
>> > (respective pom's).
>> > >
>> > > Now when I am running jetty, it give error for camel related
>> > configuration, ex of camel configuration which is working on spring
>> > >
>> > > Context file with camel configurations :
>> > >
>> > > <?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:util="http://www.springframework.org/schema/util"
>> > >        xmlns:context="http://www.springframework.org/schema/context"
>> > >        xmlns:camel="http://camel.apache.org/schema/spring"
>> > >        xsi:schemaLocation="http://www.springframework.org/schema/beans
>> > http://www.springframework.org/schema/beans/spring-beans.xsd
>> > >
>> http://www.springframework.org/schema/util
>> > http://www.springframework.org/schema/util/spring-util.xsd
>> > >                               http://camel.apache.org/schema/spring
>> > http://camel.apache.org/schema/spring/camel-spring.xsd
>> > >
>> > http://www.springframework.org/schema/context
>> > http://www.springframework.org/schema/context/spring-context.xsd">
>> > >
>> > >     <bean id="notificationService"
>> >
>> class="com.edb.payment.pays.core.pwh.service.notification.NotificationServiceImpl"/>
>> > >     <context:component-scan
>> >
>> base-package="com.edb.payment.pays.core.pwh.service.notification.mapper"/>
>> > >
>> > >          <bean id="notificationServiceDestinationResolver"
>> > >
>> > class="com.edb.finance.common.spring.jms.support.WmqDestinationResolver">
>> > >              <property name="targetClient">
>> > >                  <util:constant
>> > static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_TARGET_DEST_MQ"/>
>> > >              </property>
>> > >              <property name="encoding">
>> > >                  <util:constant
>> > static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_ENCODING_NATIVE"/>
>> > >              </property>
>> > >              <property name="ccsid"
>> > value="${notification.internal.mq.ccsid:1208}"/>
>> > >              <property name="baseQueueManagerName"
>> > value="${nmq.mq.queueManager}"/>
>> > >          </bean>
>> > >
>> > >          <camel:camelContext id="notificationServiceCamelContext"
>> > useMDCLogging="true">
>> > >
>> > >              <camel:endpoint id="notificationServiceQueue"
>> >
>> uri="jms:queue:{{notification.internal.mq.queueName}}?connectionFactory=#NMQServiceCacheConnectionFactory&amp;destinationResolver=#notificationServiceDestinationResolver&amp;disableTimeToLive=true&amp;deliveryPersistent=true&amp;explicitQosEnabled=true&amp;disableReplyTo=true&amp;exchangePattern=InOnly"/>
>> > >
>> > >              <camel:route id="cpsAdviceStatusReportServiceRoute">
>> > >                  <camel:from uri="seda:notificationRoute"/>
>> > >                  <camel:convertBodyTo
>> > type="com.evry.notification.message.v1.NotificationMessage"/>
>> > >                  <camel:marshal>
>> > >                      <camel:jaxb prettyPrint="true"
>> > encoding="{{file.encoding.utf}}"
>> > >
>> > contextPath="com.evry.notification.message.v1"/>
>> > >                  </camel:marshal>
>> > >                  <camel:convertBodyTo type="java.lang.String"/>
>> > >                  <camel:log logName="MESSAGE_TRACE" loggingLevel="INFO"
>> > >                             message="NOTIFICATION_SERVICE: headers=
>> > ${headers}, body= ${body}"/>
>> > >                  <camel:to ref="notificationServiceQueue"/>
>> > >              </camel:route>
>> > >
>> > >          </camel:camelContext>
>> > >
>> > > </beans>
>> > >
>> > > Error as :
>> > >
>> > > Error creating bean with name 'notificationService' defined in URL
>> >
>> [file:/D:/mohit/code/pin-server/pays-core/pays-core-pi-service/target/classes/spring/pwh-notification-service-context.xml]:
>> > Initialization of bean failed; nested exception is
>> > org.apache.camel.spring.GenericBeansException: Error post processing
>> bean:
>> > notificationService; nested exception is java.lang.NullPointerException
>> > >     at
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
>> > >     at
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
>> > >     at
>> >
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
>> > >     at
>> >
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
>> > >     at
>> >
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
>> > >     at
>> >
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
>> > >     at
>> >
>> org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
>> > >     at
>> >
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
>> > >     at
>> >
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
>> > >     at
>> >
>> org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
>> > >     at
>> >
>> org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
>> > >     ... 184 more
>> > > Caused by: org.apache.camel.spring.GenericBeansException: Error post
>> > processing bean: notificationService; nested exception is
>> > java.lang.NullPointerException
>> > >     at
>> >
>> org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:159)
>> > >     at
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
>> > >     at
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
>> > >     at
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
>> > >     ... 194 more
>> > > Caused by: java.lang.NullPointerException
>> > >     at
>> >
>> org.apache.camel.impl.CamelPostProcessorHelper.matchContext(CamelPostProcessorHelper.java:85)
>> > >     at
>> >
>> org.apache.camel.impl.DefaultCamelBeanPostProcessor$1.doWith(DefaultCamelBeanPostProcessor.java:185)
>> > >     at
>> >
>> org.apache.camel.util.ReflectionHelper.doWithFields(ReflectionHelper.java:74)
>> > >     at
>> >
>> org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFields(DefaultCamelBeanPostProcessor.java:167)
>> > >     at
>> >
>> org.apache.camel.impl.DefaultCamelBeanPostProcessor.postProcessBeforeInitialization(DefaultCamelBeanPostProcessor.java:82)
>> > >     at
>> >
>> org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:153)
>> > >     ... 197 more
>> > > [INFO] Started ServerConnector@6847dfe8{HTTP/1.1,[http/1.1]}{
>> > 0.0.0.0:8080}<mailto:ServerConnector@6847dfe8
>> > %7bHTTP/1.1,%5bhttp/1.1%5d%7d%7b0.0.0.0:8080%7d>
>> > > [INFO] Started @96732ms
>> > > [INFO] Started Jetty Server
>> > >
>> > > Process finished with exit code -1
>> > >
>> > >
>> > > Can please suggest me is there any problem with spring boot and this
>> xml
>> > based configurations ? or do we need to take care something else as well
>> ??
>> > >
>> > > I have tried number of ways to fix this but nothing works .. so I
>> > decided to ask you , sorry for trouble , hope I will get some suggestions
>> > here.
>> > >
>> > > Also I tried to subscribe for your groups but that failed.
>> > >
>> > >
>> > > Regards,
>> > > Mohit Sharma
>> > >
>> > >
>> > >
>> > > Sensitivity: Internal
>> >
>> >
>> >
>> > --
>> > Claus Ibsen
>> > -----------------
>> > http://davsclaus.com @davsclaus
>> > Camel in Action 2: https://www.manning.com/ibsen2
>> >
>>
>
>
> --
> --
> David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen



--
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2