git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


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 <davidkarlsen@xxxxxxxxx>
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 <
> douglass.doug@xxxxxxxxx>:
>
> > On Wed, Jun 27, 2018 at 12:18 AM Claus Ibsen <claus.ibsen@xxxxxxxxx>
> > 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 <Mohit.Sharma@xxxxxxxx>
> > > 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
>