Daniel Spilker created CXF-8977:
-----------------------------------
Summary: Add support for MTOM Serialization Policy Assertion 1.1
Key: CXF-8977
URL: https://issues.apache.org/jira/browse/CXF-8977
Project: CXF
Issue Type: New Feature
Components: WS-* Components
Affects Versions: 4.0.3
Reporter: Daniel Spilker
When trying to consume a WSDL containing a MTOM Serialization Policy Assertion
1.1 (https://www.w3.org/TR/soap12-mtom-policy/) a warning is logged and an
exception is thrown.
{code}
Feb. 13, 2024 7:10:47 AM org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl
handleNoRegisteredBuilder
WARNUNG: No assertion builder for type
{http://www.w3.org/2007/08/soap12-mtom-policy}MTOM registered.
jakarta.xml.ws.soap.SOAPFaultException: None of the policy alternatives can be
satisfied.
at
org.apache.cxf.jaxws.JaxWsClientProxy.mapException(JaxWsClientProxy.java:195)
at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)
at jdk.proxy2/jdk.proxy2.$Proxy48.listShipments(Unknown Source)
at
com.example.shipment.adapters.TransferServiceAdapter.listShipments(TransferServiceAdapter.java:52)
at
com.example.shipment.adapters.TransferServiceAdapterTest.testListShipments(TransferServiceAdapterTest.java:39)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.apache.cxf.ws.policy.PolicyException: None of the policy
alternatives can be satisfied.
at
org.apache.cxf.ws.policy.EndpointPolicyImpl.chooseAlternative(EndpointPolicyImpl.java:172)
at
org.apache.cxf.ws.policy.EndpointPolicyImpl.finalizeConfig(EndpointPolicyImpl.java:146)
at
org.apache.cxf.ws.policy.EndpointPolicyImpl.initialize(EndpointPolicyImpl.java:142)
at
org.apache.cxf.ws.policy.PolicyEngineImpl.createEndpointPolicyInfo(PolicyEngineImpl.java:614)
at
org.apache.cxf.ws.policy.PolicyEngineImpl.getEndpointPolicy(PolicyEngineImpl.java:326)
at
org.apache.cxf.ws.policy.PolicyEngineImpl.getClientEndpointPolicy(PolicyEngineImpl.java:313)
at
org.apache.cxf.ws.policy.PolicyDataEngineImpl.getClientEndpointPolicy(PolicyDataEngineImpl.java:61)
at
org.apache.cxf.transport.http.HTTPConduit.updateClientPolicy(HTTPConduit.java:372)
at
org.apache.cxf.transport.http.HTTPConduit.updateClientPolicy(HTTPConduit.java:392)
at
org.apache.cxf.transport.http.HTTPConduit.getClient(HTTPConduit.java:938)
at
org.apache.cxf.transport.http.HTTPConduit.configureConduitFromEndpointInfo(HTTPConduit.java:414)
at
org.apache.cxf.transport.http.HTTPConduit.finalizeConfig(HTTPConduit.java:494)
at
org.apache.cxf.transport.http.HTTPTransportFactory.getConduit(HTTPTransportFactory.java:257)
at
org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(SoapTransportFactory.java:226)
at
org.apache.cxf.endpoint.AbstractConduitSelector.createConduit(AbstractConduitSelector.java:151)
at
org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(AbstractConduitSelector.java:108)
at
org.apache.cxf.endpoint.UpfrontConduitSelector.prepare(UpfrontConduitSelector.java:63)
at
org.apache.cxf.endpoint.ClientImpl.prepareConduitSelector(ClientImpl.java:885)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:523)
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)
... 6 more
{code}
WSDL:
{code}
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:example="http://www.example.com/namespace"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsoma="http://www.w3.org/2007/08/soap12-mtom-policy"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
targetNamespace="http://www.example.com/namespace">
<!-- ... -->
<wsdl:binding name="TransferServiceBinding"
type="example:TransferServicePortType">
<wsp:PolicyReference URI="#MtomPolicy"/>
<!-- ... -->
</wsdl:binding>
<!-- ... -->
<wsp:Policy wsu:Id="MtomPolicy">
<wsoma:MTOM wsp:Optional="false"/>
</wsp:Policy>
</wsdl:definitions>
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)