Malcolm Wang created CXF-8676:
---------------------------------
Summary: Parameter targetNamespace of WebResult annotation is not
supported. Problem with empty response targetNamespace
Key: CXF-8676
URL: https://issues.apache.org/jira/browse/CXF-8676
Project: CXF
Issue Type: Bug
Affects Versions: 3.5.1
Reporter: Malcolm Wang
In class "org.apache.cxf.jaxws.support.JaxWsServiceConfiguration" method "QName
getOutPartName(OperationInfo op, Method method, int paramNumber)" parameter
targetNamespace of annotation WebResult is not readed and returned in QName
object.
For example targetNamespace parameter of WebResult is used in method "QName
getOutParameterName(OperationInfo op, Method method, int paramNumber)" of the
same class.
Due to this problem soap cxf client can not communicate with SOAP WS whitch
have empty targetnamespace in response object (for example when bindings soap
style="document"). WS service interface example:
{code:java}
@WebService(
targetNamespace = "http://sample.com",
name = "Sample"
)
@XmlSeeAlso({ObjectFactory.class})
@SOAPBinding(
parameterStyle = ParameterStyle.BARE
)
public interface Sample{
@WebMethod(
action = "sample"
)
@WebResult(
name = "sampleReturn",
targetNamespace = "",
partName = "sampleReturn"
)
String sample();
} {code}
Code throws Exception
{code:java}
org.apache.cxf.interceptor.Fault: Unexpected element sampleReturn found.
Expected {http://sample.com}sampleReturn.
at
org.apache.cxf.wsdl.interceptors.DocLiteralInInterceptor.validatePart(DocLiteralInInterceptor.java:279)
at
org.apache.cxf.wsdl.interceptors.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:189)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:829)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1701)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1570)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1371)
at
org.apache.cxf.ext.logging.LoggingOutputStream.postClose(LoggingOutputStream.java:53)
at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:228)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:671)
at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:528)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:439)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:354)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:312)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
{code}
In current CXF version (3.5.1) I have to set enpoint property
""soap.no.validate.parts": "true" to allow communicate with this WS.
The same problem was described in StackOverflow:
https://stackoverflow.com/questions/44386088/how-to-configure-empty-targetnamespace-in-the-web-service
--
This message was sent by Atlassian Jira
(v8.20.1#820001)