0

I am migrating my java enterprise application from WAS8.5 full profile to liberty server. My application code has soap client and required stubs generated from WSDL. I am able to receive response when using WAS8.5 but getting below exceptions while running liberty server.

  • I have already added jaxws-2.2 .
  • Recreated the stubs again pointing to liberty server, IBM-WS from eclipse. I
  • couldn't find relevant answers online.

Console logs

[WARNING ] Could not unwrap Operation {http://services.abc.com/gb/getsomepoint/v1}getSomeInfoByParam to match method "public abstract void com.abc.services.gb.getsomepoint.v1.GBGetSomePointV1.getSomeInfoByParam(javax.xml.ws.Holder,java.lang.String,java.lang.String,javax.xml.ws.Holder,javax.xml.ws.Holder)"
javax.xml.ws.soap.SOAPFaultException: BIP3113E: Exception detected in message flow GB_GetSomePoint_V1.SOAP Input (integration node NMD4BRK) 
[err]   at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:156)
[err]   at [internal classes]
[err]   ... 51 more
[err] Caused by: 
[err] org.apache.cxf.binding.soap.SoapFault: BIP3113E: Exception detected in message flow GB_GetSomePoint_V1.SOAP Input (integration node NMD9BRK) 
[err]   at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:84)
[err]   at [internal classes]
[err]   ... 53 more

2 Answers2

1

There isn't much information to go on from the console but one thing to check is if the request/response messages to and from the client look the same on Liberty as they do on WAS 8.5. That'd be a simple way to verify if the expected behavior is the same. Another thing to consider is if your WSDL contract matches the request generated by the client (i.e. all the bindings are there).

The Web Services configuration (WS-Policy/WS-Security) can be substantially different on Liberty vs WAS 8.5 and this Knowledge Center document has some good info on how to properly configure your app if you need it.

Deploying JAX-WS applications to Liberty:

https://www.ibm.com/support/knowledgecenter/SSD28V_9.0.0/com.ibm.websphere.wlp.core.doc/ae/twlp_dep_jaxws.html

The last thing I’d suggest is turning on Liberty’s Web Services trace. There isn’t a lot of info about root cause from the console messages, but by turning on the trace the specific problem might make itself known. You can turn trace on by following these directions.

Enabling trace on WebSphere Liberty:

https://www.ibm.com/support/knowledgecenter/SSD28V_9.0.0/com.ibm.websphere.wlp.core.doc/ae/rwlp_logging.html

The specific trace specification you’ll want to enable for Web Services is as follows:

traceSpecification="*=audit:com.ibm.ws.jaxws.*=finest:org.apache.cxf.*=finest”
  • Thanks Thomas. But strangely enough my application is working now after commenting jaxws-2.2 feature from server.xml. Not sure hows that possible. – Vipul Punia Jun 26 '19 at 08:48
  • Interesting, so you removed jaxws-2.2 and it started to work? – Thomas Johnson Jun 26 '19 at 16:38
  • Are you deploying any JAX-WS jars inside your application WAR/EAR? Is 2.2 the version of JAX-WS that you were using in full profile WAS? What other features do you have enabled in Liberty? One of those might be pulling in a different JAX-WS. – dbreaux Jun 27 '19 at 15:00
  • So to summarize `WAS 8.5 implementation - works , Java Implementation - works , Liberty Implementation - does not work` . But i have to make the code work with liberty implementation because our organization has standardized to use javaee8 feature which by default pulls in the jaxws-2.2 feature. Any suggestions ? – Vipul Punia Aug 02 '19 at 17:45
  • Were you able to get the JAX-WS trace like I suggested? And is a SOAPFault the expected return object? If not, the error from the console output looks like CXF is wrapping the root cause in a SOAPFault. The `wlp/usr//message.log` file may have more information about what caused the fault, if not check the trace.log file and text search for `BIP3113E`. That should lead you right to the the stack trace as it shows in the console, the root cause error should occur just prior to the beginning of the fault handling – Thomas Johnson Aug 06 '19 at 18:03
0

If it works after commenting out jaxws-2.2 feature, you must be using a different jax-ws implementation packaged with your application. You can try adding back the jaxws-2.2 feature and set this JVM property for liberty server: -Dcom.ibm.xml.xlxp.jaxb.opti.level=0

  • Yes, its taking the default Java implementation of jax-ws. So to summarize `WAS 8.5 implemnetation - works , Java Implementation - works , Liberty Implementation - does not work ` . But i have to make it work with liberty implementation, I am not sure what the JVM property does but the middleware team will not approve of it while deploying it in DEV env. – Vipul Punia Aug 02 '19 at 17:49
  • this JVM change didnt work for me. I m not sure if the issue is related to JAXB – Vipul Punia Aug 04 '19 at 10:11