Hi guys,
I have an interesting problem. I'm trying to deploy our IME on a newer WildFly platform now that 14.4 supports it. The basic IME works.
However, I have a small webservice_client.jar that I deploy in
deployments\iam_im.ear\library
that is used by a couple of my BLTHs and LAHs to grab data from an internal webservice for decision making etc. On the prior WildFly (8.2.1) all this worked fine.
On the new 15.0.1 version with new IM the exact same code and workflow fails. I recompiled my custom code against the new 14.4 libraries, but that didn't help.
The result is a NPE with the part of the stack trace as shown here, starting at the last line of my code:
2021-07-15 11:39:02,534 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (default task-1) Interceptor for {http://webservice.cmsintegration.xxx.com/}CMSIntegrationService#{http://webservice.cmsintegration.xxx.com/}processCPR has thrown exception, unwinding now: java.lang.NullPointerException
at javax.xml.bind.PropertyException.<init>(PropertyException.java:124)
at org.eclipse.persistence.jaxb.JAXBMarshaller.setProperty(JAXBMarshaller.java:805)
at org.apache.cxf.common.jaxb.JAXBUtils.setEscapeHandler(JAXBUtils.java:1567)
at org.apache.cxf.jaxb.io.DataWriterImpl.lambda$createMarshaller$0(DataWriterImpl.java:138)
at org.apache.cxf.jaxb.JAXBDataBinding.applyEscapeHandler(JAXBDataBinding.java:271)
at org.apache.cxf.jaxb.io.DataWriterImpl.createMarshaller(DataWriterImpl.java:138)
at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:239)
at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:118)
at org.apache.cxf.wsdl.interceptors.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:537)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:446)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:361)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139)
at com.sun.proxy.$Proxy382.processCPR(Unknown Source)
at com.xxx.idm.CMS.processCPR(CMS.java:172)
The webservice is IDE generated and works in various other test scenarios I came up with. The only time it seems to fail if it's deployed and called along IdM, where, unfortunately, it needs to be so my BLTH and LAHs can access the classes.
I want to add that this is not a network problem. The webservice endpoint is never even called. No traffic leaves the box. The NPE happens internally when WildFly is setting up the outbound call.
The javadoc for the JAXBMarshaller.setProperty() method says:
Set a property on the JAXBMarshaller. Attempting to set any unsupported property will result in a jakarta.xml.bind.PropertyException
This seems to be exactly what is happening.
I know this is probably a long shot, but does anyone have any ideas?