Symantec IGA

 View Only

 WildFly / IM 14.4, calling third party webservice from BLTH (NullPointerException)

Stephan vanBeerschoten's profile image
Stephan vanBeerschoten posted Jul 22, 2021 09:40 PM
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?