camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Nuttall <mknutt...@gmail.com>
Subject Re: Problem with upgrade from camel 2.19.3 to camel 2.20.0
Date Tue, 24 Oct 2017 15:47:44 GMT
Is there any reason you are not using the standard Spring Boot + Camel
mechanisms to create the context and routes. I don't readily see any in
your code.  Doing so might resolve the problem.  Let me know if you need
help with that..

Mark

On Tue, Oct 24, 2017 at 9:36 AM, Dicken George <dickengeorge@gmail.com>
wrote:

> Dear Fellow Developers,
>
> Just recently, I tried to upgrade my camel-spring boot project form camel
> 2.19.3 to camel 2.20.0 and I face the problem that, I cannot boot up my
> application any more, and I get the following stack trace
>
> java.lang.NullPointerException
> at
> com.haufe.ssmp.sfdc.api.app.BeanConfiguration.afterApplicationStart(
> BeanConfiguration.java:66)
> at
> org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(
> RoutesCollector.java:226)
> at
> org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(
> RoutesCollector.java:54)
> at
> org.springframework.context.event.SimpleApplicationEventMulticas
> ter.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
> at
> org.springframework.context.event.SimpleApplicationEventMulticas
> ter.invokeListener(SimpleApplicationEventMulticaster.java:165)
> at
> org.springframework.context.event.SimpleApplicationEventMulticas
> ter.multicastEvent(SimpleApplicationEventMulticaster.java:139)
> at
> org.springframework.context.support.AbstractApplicationContext.
> publishEvent(AbstractApplicationContext.java:393)
> at
> org.springframework.context.support.AbstractApplicationContext.
> publishEvent(AbstractApplicationContext.java:347)
> at
> org.springframework.context.support.AbstractApplicationContext.
> finishRefresh(AbstractApplicationContext.java:883)
> at
> org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.
> finishRefresh(EmbeddedWebApplicationContext.java:144)
> at
> org.springframework.context.support.AbstractApplicationContext.refresh(
> AbstractApplicationContext.java:546)
> at
> org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.
> refresh(EmbeddedWebApplicationContext.java:122)
> at
> org.springframework.boot.SpringApplication.refresh(
> SpringApplication.java:693)
> at
> org.springframework.boot.SpringApplication.refreshContext(
> SpringApplication.java:360)
> at
> org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
> at
> org.springframework.boot.SpringApplication.run(
> SpringApplication.java:1118)
> at
> org.springframework.boot.SpringApplication.run(
> SpringApplication.java:1107)
> at com.haufe.ssmp.sfdc.api.Application.main(Application.java:12)
>
> Due to my complex use case, i would like to start one specific route
> manually and not use the autoconfiguration and autostart from camelcontext.
> I do this in my configuration class by over riding the before application
> start and after application start methods.
>
> @Configuration
> class BeanConfiguration implements CamelContextConfiguration {
>     private static final Logger log =
> LoggerFactory.getLogger(BeanConfiguration.class);
>
>     @Override
>     public void beforeApplicationStart(CamelContext camelContext) {
>         camelContext.setPackageScanClassResolver(new
> FatJarPackageScanClassResolver());
>         camelContext.resolveDataFormat("json-jackson");
>     }
>
>     @Autowired
>     SalesforceComponent sfdcComp;
>
>     @Override
>     public void afterApplicationStart(CamelContext camelContext) {
>
>         try {
>             sfdcComp.start();
>             camelContext.startRoute("salesforce-versions");
>             Route theRoute = camelContext.getRoute("salesforce-versions");
>             Endpoint ep = theRoute.getEndpoint();
>
>             Exchange exchange = ep.createExchange();
>             ProducerTemplate template =
> exchange.getContext().createProducerTemplate();
>             DefaultExchange o = (DefaultExchange) template.request(ep, new
> Processor() {
>
>                 @Override
>                 public void process(Exchange exchange) throws Exception {
>                     // TODO Auto-generated method stub
>
>                 }
>             });
>             Object result = o.getOut().getBody();
>             if(result == null && !(result instanceof ArrayList))
>                     throw new Exception("No Salesforce version, login
> failed.");
>
>             ArrayList theList = (ArrayList) result;
>             if(theList.size() <= 1)
>                     throw new Exception("No Salesforce version got, login
> failed.");
>             log.debug("Connection to salesforce successfully
> established:");
>
>         } catch (Exception e) {
>             // TODO Auto-generated catch block
>             e.printStackTrace();
>             throw new RuntimeException("No Connection to salesforce");
>         }
>
>     }
> In this code, i saw during my debugging that it was able to start the
> routes in camelcontext object and get the endpoints, however with version
> 2.20.0 I see my routes are not added to the camelcontext and no routes are
> started.
>
> Could anyone help me here to trouble shoot this issue ?
>
> Thanks in advance
> --
>
> Dicken George
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message