Hello, I am trying to use a remote soap service via camel, and I'm at the point now where I can successfully access the service running from inside my IDE (IntelliJ IDEA), but when I try to run the the jar generated via "maven clean install" I get a NullPointerException when trying to access the unmarshalled response object (called from a timer consumer endpoint defined in a class called ProgramRouteBuilder). Here's the exception stack trace:
23:50:08.902 [Camel (camel) thread #1 - timer://programTimer] WARN o.a.c.component.timer.TimerConsumer - Error processing exchange. Exchange[Message: [Body is null]]. Caused by: [java.lang.NullPointerException - null] java.lang.NullPointerException: null at com.mycompany.myprogram.ProgramRouteBuilder$$anon$1.process(ProgramRouteBuilder.scala:110) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:122) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:61) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:120) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:292) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:115) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:134) ~[myprogram-1.0-SNAPSHOT.jar:na] at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:63) [myprogram-1.0-SNAPSHOT.jar:na] at java.util.TimerThread.mainLoop(Timer.java:512) [na:1.6.0_33] at java.util.TimerThread.run(Timer.java:462) [na:1.6.0_33] The failure seems to occur during unmarshalling, because I have an incoming logging interceptor and it logs the expected soap xml response before unmarshalling. It's only when I try to access the unmarshalled object that I discover it is null. By the way, at first I thought it was the interceptor causing the problem, but if I remove the interceptors from the endpoint definition I still have the problem. As I said, it works when I run inside IDEA, so I suspect it is a maven dependency-related issue, and playing around with adding transformers to maven shade has yielded some different results, but never success. Here are transformers I currently have defined for the maven shade plugin: <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.mycompany.myprogram.RemoteServiceAccessor</mainClass> <manifestEntries> <Class-Path>.</Class-Path> </manifestEntries> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/services/com.sun.tools.xjc.Plugin</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/cxf/cxf.extension</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer"> <resource>META-INF/extensions.xml</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer"> <resource>META-INF/cxf/extensions.xml</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/cxf/bus-extensions.txt</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer"> <resource>META-INF/cxf/bus-extensions.xml</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer"> <resource>META-INF/wsdl.plugin.xml</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer"> <resource>META-INF/tools.service.validator.xml</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer"> <resource>META-INF/cxf/java2wsbeans.xml</resource> </transformer> I've tried generating project templates from various archetypes (e.g. camel-cxf-contract-first, servicemix-osgi-cxf-wsdl-first-archetype, etc.) to see what their poms look like but none of them seems to provide any clues. Any ideas? Thanks! -- View this message in context: http://camel.465427.n5.nabble.com/Unmarshalled-object-is-null-from-remote-WS-if-run-jar-but-not-if-run-from-inside-IDE-tp5737648.html Sent from the Camel - Users mailing list archive at Nabble.com.