我正在从WAS8.5完整配置文件迁移Java企业应用程序 自由服务器。我的应用程序代码具有soap客户端并且是必需的 从WSDL生成的存根。使用时我可以收到回应 WAS8.5,但在运行自由服务器时遇到异常。
控制台日志
[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
答案 0 :(得分:1)
控制台上没有太多信息可进行,但是要检查的一件事是,在Liberty上与客户端之间的请求/响应消息是否看起来与在WAS 8.5上相同。这将是验证预期行为是否相同的简单方法。要考虑的另一件事是您的WSDL合同是否与客户端生成的请求匹配(即所有绑定都在那里)。
Liberty与WAS 8.5上的Web服务配置(WS-Policy / WS-Security)可以有很大的不同,并且此Knowledge Center文档提供了一些有关如何根据需要正确配置应用程序的好信息。
将JAX-WS应用程序部署到Liberty:
我建议的最后一件事是打开Liberty的Web服务跟踪。控制台消息中没有很多有关根本原因的信息,但是通过打开跟踪,可能会发现特定问题。您可以按照以下说明打开跟踪。
在WebSphere Liberty上启用跟踪:
您要为Web服务启用的特定跟踪规范如下:
traceSpecification="*=audit:com.ibm.ws.jaxws.*=finest:org.apache.cxf.*=finest”
答案 1 :(得分:0)
如果在注释掉jaxws-2.2功能后可以正常工作,则必须使用与应用程序打包在一起的其他jax-ws实现。您可以尝试重新添加jaxws-2.2功能并为自由服务器设置此JVM属性:-Dcom.ibm.xml.xlxp.jaxb.opti.level = 0