Hi,
I have to upgrade libraries for an existing JBoss EAP 7.4 application, with JDK
11
One of the upgrades is replacing Camel 2.25.4 with Camel 3.22.4.
In our application we use a subclass of DefaultCamelContext, without any
explicit initialization.
However, after migrating to Camel 3.22.4, a NPE gets thrown as the
HeadersMapFactory member is null in AbstractCamelContext.
Exception details shown below.
Explicitly adding setHeadersMapFactory(new DefaultHeadersMapFactory()) fixes
the issue.
But why should this step be needed?
Surjit Sen
2026-01-26 14:25:19,241 GMT ERROR
[org.apache.camel.impl.engine.AbstractCamelContext] (MSC service thread 1-8)
Error starting CamelContext (StandardContext) due to exception thrown: null:
java.lang.NullPointerException
at
deployment.mso_batch-5.86-SNAPSHOT.war//org.apache.camel.impl.engine.AbstractCamelContext.doStartCamel(AbstractCamelContext.java:3402)
at
deployment.mso_batch-5.86-SNAPSHOT.war//org.apache.camel.impl.engine.AbstractCamelContext.doStartContext(AbstractCamelContext.java:3113)
at
deployment.mso_batch-5.86-SNAPSHOT.war//org.apache.camel.impl.engine.AbstractCamelContext.doStart(AbstractCamelContext.java:3068)
at
deployment.mso_batch-5.86-SNAPSHOT.war//org.apache.camel.support.service.BaseService.start(BaseService.java:119)
at
deployment.mso_batch-5.86-SNAPSHOT.war//org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2717)
at
deployment.mso_batch-5.86-SNAPSHOT.war//org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:262)
at
deployment.mso_batch-5.86-SNAPSHOT.war//com.cox.oss.cvm.camel.context.application.StandardContext$Proxy$_$$_WeldClientProxy.start(Unknown
Source)
at
deployment.mso_batch-5.86-SNAPSHOT.war//org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(CdiCamelExtension.java:471)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at
[email protected]//org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)
at
[email protected]//org.jboss.weld.injection.MethodInvocationStrategy$SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:187)
at
[email protected]//org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330)
at
[email protected]//org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:123)
at
[email protected]//org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308)
at
[email protected]//org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286)
at
[email protected]//javax.enterprise.inject.spi.ObserverMethod.notify(ObserverMethod.java:124)
at
[email protected]//org.jboss.weld.util.Observers.notify(Observers.java:166)
at
[email protected]//org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:285)
at
[email protected]//org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:273)
at
[email protected]//org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:177)
at
[email protected]//org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:171)
at
[email protected]//org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:53)
at
[email protected]//org.jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:35)
at
[email protected]//org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl.fire(AfterDeploymentValidationImpl.java:28)