Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-8977

Add support for MTOM Serialization Policy Assertion 1.1

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 4.0.3
    • None
    • WS-* Components
    • None
    • Unknown

    Description

      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.

      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
      

      WSDL:

      <?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>
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              daniel.spilker@hamburg.de Daniel Spilker
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: