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)

Reply via email to