Hi,

I am trying to solve it for a very long time and I realy don't know what to do 
next.

I am creating new proxy for web services in Karaf 4.4.1 with Camel 3.18.1 and 
cxf 3.5.3. And it works fine, but I have a problem with MTOM attachments. For 
some reason it totally  screw the message. I think the problem could have been 
in <removeHeaders pattern="CamelHttp*"/> because all the previous headers are 
gone and instead of them are different. But I haven't found a way how to remove 
only one of them and without it it doesn't forward the message.
Is here anyone who knows how make it work?

Thanks in advance

Tom

 - Here is my simplified blueprint:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"; 
default-activation="lazy"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:camel="http://camel.apache.org/schema/blueprint";
           xmlns:camelcxf="http://camel.apache.org/schema/blueprint/cxf";
           xsi:schemaLocation="
             http://www.osgi.org/xmlns/blueprint/v1.0.0 
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
             http://camel.apache.org/schema/blueprint 
http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
             http://camel.apache.org/schema/blueprint/cxf 
http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd
             ">

        <camelcxf:cxfEndpoint id="mtomTestEndpoint"
                                                address="/test"
                                                
xmlns:tns="http://test.org/MtomTest";
                                                
endpointName="tns:MtomTestServiceSoap"
                                                
serviceName="tns:MtomTestService"
                                                
wsdlURL="file:etc/wsdl/mtomtest.wsdl"
                                                >
            <camelcxf:properties>
                <entry key="dataFormat" value="PAYLOAD" />
                <entry key="mtom-enabled" value="true" />
            </camelcxf:properties>
        </camelcxf:cxfEndpoint>

        <camelContext id="mtomTestRoute" trace="false" 
xmlns="http://camel.apache.org/schema/blueprint";>
            <route>
              <from uri="cxf:bean:mtomTestEndpoint"/>
              <removeHeaders pattern="CamelHttp*"/>
              <to uri="http://localhost:8299?throwExceptionOnFailure=false"/>
            </route>
        </camelContext>
</blueprint>

 - Here is wsdl:
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions
        xmlns:xs="http://www.w3.org/2001/XMLSchema";
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
        xmlns:tns="http://test.org/MtomTest";
        xmlns:xmime="http://www.w3.org/2005/05/xmlmime";
        targetNamespace="http://test.org/MtomTest";
        >
    <wsdl:types>
        <xs:schema targetNamespace="http://test.org/MtomTest"; 
xmlns:xmime="http://www.w3.org/2005/05/xmlmime"; elementFormDefault="qualified">
            <xs:element name="MtomTest">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Content" type="xs:base64Binary" 
xmime:expectedContentTypes="application/octet-stream" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="MtomTestResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="testCheck" type="xs:integer" 
minOccurs="0" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:schema>
    </wsdl:types>
    <wsdl:message name="MtomTestIn">
        <wsdl:part name="parameters" element="tns:MtomTest"/>
    </wsdl:message>
    <wsdl:message name="MtomTestOut">
        <wsdl:part name="parameters" element="tns:MtomTestResponse"/>
    </wsdl:message>
    <wsdl:portType name="MtomTestServiceSoap">
        <wsdl:operation name="MtomTest">
            <wsdl:input message="tns:MtomTestIn"/>
            <wsdl:output message="tns:MtomTestOut"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="MtomTestServiceSoap" type="tns:MtomTestServiceSoap">
        <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="MtomTest">
            <soap:operation soapAction=""/>
            <wsdl:input>
                <soap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="MtomTestService">
        <wsdl:port name="MtomTestServiceSoap" binding="tns:MtomTestServiceSoap">
            <soap:address location="http://localhost:8181/mtom-test"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

 - original header from soapUI:
POST / HTTP/1.1^M
Content-Type: multipart/related; type="application/xop+xml"; 
start="<rootp...@soapui.org>"; start-info="text/xml"; 
boundary="----=_Part_0_1885335651.1666069360756"^M
SOAPAction: ""^M
MIME-Version: 1.0^M
Content-Length: 1491^M
Host: localhost:8299^M
Connection: Keep-Alive^M
User-Agent: Apache-HttpClient/4.5.5 (Java/16.0.1)^M
^M
^M
------=_Part_0_1885335651.1666069360756^M
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"^M
Content-Transfer-Encoding: 8bit^M
Content-ID: <rootp...@soapui.org>^M
^M
<soapenv:Envelope......

 - forwarded header from Karaf:
POST / HTTP/1.1^M
MIME-Version: 1.0^M
operationName: MtomTest^M
operationNamespace: http://test.org/MtomTest^M
org.apache.cxf.headers.Header.list: 
org.apache.cxf.binding.soap.SoapHeader@45e002f5^M
User-Agent: Apache-HttpClient/4.5.5 (Java/16.0.1)^M
Transfer-Encoding: chunked^M
Content-Type: application/xop+xml^M
Host: localhost:8299^M
Connection: Keep-Alive^M
Accept-Encoding: gzip,deflate^M
^M
f6^M
<mto:MtomTest....

As you can see, even soapenv:Envelope is missing.

Reply via email to