ppil1 wrote:
Hi,
I change my wsdl file
<element name="fileattach" type="xsd:base64Binary"
xmime:expectedContentTypes="application/octet-stream"/>
but i'm still getting same result except fileattach element is base64
encoded.
After checking release & bug reported
(http://issues.apache.org/activemq/browse/SMXCOMP-32)
seems that i need cxf-se & cxf-bc 2009-02 release ?
Is fix included in 3.4.0.2 servicemix fuse release ?
Yes, I believe so
Thanks
Freeman Fang wrote:
Hi,
Your wsdl is the problem,
you must change
<xsd:element name="fileattach" type="xsd:string"/>
to
<element name="fileattach" type="xsd:base64Binary"
xmime:expectedContentTypes="application/octet-stream"/>
and use wsdl2java regenerate the cxf client proxy
org.apache.servicemix.test.HelloOUT, which means you can use DataHandler
from org.apache.servicemix.test.HelloOUT
You can get more details about how to use MTOM in cxf from [1]
[1]http://cwiki.apache.org/CXF20DOC/mtom.html
Freeman
ppil1 wrote:
Hi,
i downloaded latest fuse esb release and deployer my SA whith mtomEnabled
pn
cxfse:proxy, but i get the same issue: fileattach element not send as
attachement but send as soapbody element.
I don't known if my issue is related to mtom or because my fileattach
element is defined as a string element in WSDL provided to me.
Here the whole WSDL :
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://servicemix.apache.org/test_out"
xmlns:typens="http://servicemix.apache.org/test_out/types"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="HelloOUT"
targetNamespace="http://servicemix.apache.org/test_out">
<wsdl:types>
<xsd:schema
targetNamespace="http://servicemix.apache.org/test_out/types"
elementFormDefault="qualified">
<xsd:element name="SayHelloOUT">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name"
type="xsd:string"/>
<xsd:element name="fileattach"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SayHelloOUTResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="UnknownWordFault">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="word"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="SayHelloOUTRequest">
<wsdl:part name="request" element="typens:SayHelloOUT"/>
<wsdl:part name="fileattach" type="xsd:string"/>
</wsdl:message>
<wsdl:message name="SayHelloOUTResponse">
<wsdl:part name="payload" element="typens:SayHelloOUTResponse"/>
</wsdl:message>
<wsdl:message name="UnknownWordFault">
<wsdl:part name="payload" element="typens:UnknownWordFault"/>
</wsdl:message>
<wsdl:portType name="HelloOUT">
<wsdl:operation name="SayHelloOUT">
<wsdl:input message="tns:SayHelloOUTRequest"/>
<wsdl:output message="tns:SayHelloOUTResponse"/>
<wsdl:fault name="UnknownWord"
message="tns:UnknownWordFault"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="HelloOUTSOAPBinding" type="tns:HelloOUT">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="SayHelloOUT">
<wsdl:input>
<mime:multipartRelated>
<mime:part>
<soap:body parts="request"
use="literal" />
</mime:part>
<mime:part>
<mime:content part="fileattach"
type="text/xml"/>
</mime:part>
</mime:multipartRelated>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
<wsdl:fault name="UnknownWord">
<soap:fault use="literal" name="UnknownWord" />
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloOUTService">
<wsdl:port binding="tns:HelloOUTSOAPBinding" name="soap">
<soap:address
location="http://localhost:8080/HelloOUTService/"
/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Freeman Fang wrote:
Hi,
You need also add mtomEnabled="true" to your cxfse:proxy.
This is a new added feature so there is no apache servicemix release
including it, try play with the latest FUSE ESB(FUSE ESB is based on
apache servicemix and get released more frequently) from [1]
[1]http://repo.open.iona.com/maven2/org/apache/servicemix/apache-servicemix/3.3.1.17-fuse/
Freeman
ppil1 wrote:
Hi on both endpoint i 've set mtomEnabled=true but issue is still the
same.
Only the proxied webservice is a multipart WS.
CxfSe component seems to send a wrong jbi message to cxf bc proxied
endpoint.
Instead of sending a jbi attachement for my fileattach element,
coponent
is
sending element in jbi body message.
Thanks for help.
Here my configuration
...
<cxfbc:provider mtomEnabled="true" wsdl="classpath:service.wsdl"
locationURI="http://localhost:8080/test"
service="test:HelloOUTService"
endpoint="soap"
/>
.....
<cxfse:endpoint mtomEnabled="true" >
<cxfse:pojo>
<bean class="org.apache.servicemix.test.HelloIn" >
<property name="myHelloOUT">
<cxfse:proxy service="test:HelloOUTService"
endpoint="soap"
context="#context" type="org.apache.servicemix.test.HelloOUT" />
</property>
</bean>
...
Helloout WSDL
<wsdl:binding name="HelloOUTSOAPBinding" type="tns:HelloOUT">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="SayHelloOUT">
<wsdl:input>
<mime:multipartRelated>
<mime:part>
<soap:body parts="request"
use="literal" />
</mime:part>
<mime:part>
<mime:content part="fileattach"
type="text/xml"/>
</mime:part>
</mime:multipartRelated>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
<wsdl:fault name="UnknownWord">
<soap:fault use="literal" name="UnknownWord" />
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloOUTService">
<wsdl:port binding="tns:HelloOUTSOAPBinding" name="soap">
<soap:address
location="http://localhost:8080/HelloOUTService/"
/>
</wsdl:port>
</wsdl:service>
--
Freeman Fang
------------------------
Open Source SOA: http://fusesource.com
--
Freeman Fang
------------------------
Open Source SOA: http://fusesource.com
--
Freeman Fang
------------------------
Open Source SOA: http://fusesource.com