Unexpected shell element when using client-created CXF

I created a client for a web service using CXF wsdl2java.

The client connects to OK, but gives out a temptation complaining that the answer found does not match the expected answer.

May 22, 2013 3:44:46 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL INFO: Creating Service {http://www.service-now.com/cmdb_ci_comm}ServiceNow_cmdb_ci_comm from WSDL: file:/C:/Dev/Workspaces/Eclipse/clim20130508/ServiceNowCXFClient/bin/service-now.wsdl Invoking getRecords... May 22, 2013 3:44:51 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging WARNING: Interceptor for {http://www.service-now.com/foo}ServiceNow_foo#{http://www.service-now.com/foo}getRecords has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Unexpected wrapper element getRecordsResponse found. Expected {http://www.service-now.com/foo}getRecordsResponse. at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:100) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:800) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1592) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1490) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1309) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:622) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366) 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:133) at com.sun.proxy.$Proxy29.getRecords(Unknown Source) at com.service_now.cmdb_ci_comm.ServiceNowSoap_ServiceNowSoap_Client.main(ServiceNowSoap_ServiceNowSoap_Client.java:178) 

Obviously, the response received differs from the expected answer in that the latter includes a namespace.

 getRecordsResponse found. Expected {http://www.service-now.com/foo}getRecordsResponse 

My service client opens as follows:

 @WebServiceClient(name = "ServiceNow_foo", wsdlLocation = "service-now.wsdl", targetNamespace = "http://www.service-now.com/foo") public class ServiceNowFoo extends Service { public final static URL WSDL_LOCATION; public final static QName SERVICE = new QName("http://www.service-now.com/foo", "ServiceNow_foo"); public final static QName ServiceNowSoap = new QName("http://www.service-now.com/foom", "ServiceNowSoap"); 

You can see the client code in the question How to configure a CXF-generated client for proactive HTTP authentication?

Any ideas on what is the wrong configuration?

+6
source share
1 answer

An explanation can be found here https://issues.apache.org/jira/browse/CXF-1460, although this is a long-closed error.

I am struggling with the same problem with CXF and ServiceNow when the WSDL that provides elementFormDefault="unqualified" has elementFormDefault="unqualified" . I noticed that the generated package-info.java does not have the correct @javax.xml.bind.annotation.XmlSchema annotation since it skips elementFormDefault=XmlNsForm.UNQUALIFIED I am using CXF 3.2.4 with Glassfish Java XML Binding 2.3.0

A workaround to get the client to work is to set the glide.wsdl.schema.UnqualifiedElementFormDefault parameter in glide.wsdl.schema.UnqualifiedElementFormDefault to false .

0
source

Source: https://habr.com/ru/post/945626/


All Articles