Hiya Sef,

Yeah this is currently a bug in XFire.  It currently doesn't work as a
direct parameter to your service - only within other schema elements. We're
taking a look at fixing it for 1.2.6 though. Sorry for the problems this has
caused!

- Dan

On 4/18/07, sef <[EMAIL PROTECTED]> wrote:


Hi,

reading my question over again made me post some code snippets for
clarification of my problem. The sample WSDL I'm using is appended on the
bottom of my message.

What I'd like is WsGen to generate the stubs for my service in such a way
that the method signature will be

    public String sayHello(
        @WebParam(name = "firstName", targetNamespace =
"http://example.com/myService";)
        String name,
        DataSource content);

instead of

    public String sayHello(
        @WebParam(name = "firstName", targetNamespace =
"http://example.com/myService";)
        MyContent firstName);

If I avoid additional complex types and just modify the message part of
the
WSDL as follows:

   <message name="SayHelloRequest">
      <part name="firstName" type="tns:myContent"/>
      <part name="name" type="xsd:string"/>
      <part name="content" type="xsd:base64Binary"

xmime:expectedContentTypes="application/octet-stream"

xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/>
   </message>

then my method looks as follows:

    public String sayHello(
        @WebParam(name = "firstName", targetNamespace =
"http://example.com/myService";)
        MyContent firstName,
        @WebParam(name = "name", targetNamespace =
"http://example.com/myService";)
        String name,
        @WebParam(name = "content", targetNamespace =
"http://example.com/myService";)
        byte[] content);

Which still leaves me only with a byte[] or with an overhead of creating
dummy classes. Is there a way for me to get the desired method signature?
Or
am I screwing something up big time in my WSDL?

Thanks,
  sef

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="HelloService"
   targetNamespace="http://example.com/myService";
   xmlns="http://schemas.xmlsoap.org/wsdl/";
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
   xmlns:tns="http://example.com/myService";
   xmlns:xsd="http://www.w3.org/2001/XMLSchema";>

        <types>
                <xsd:schema xmlns=""
                                        xmlns:xsd="
http://www.w3.org/2001/XMLSchema";
                                        targetNamespace="
http://example.com/myService";>

                <xsd:element name="myContent">
                        <xsd:complexType>
                                <xsd:all>
                                        <xsd:element name="name"
type="xsd:string"/>
                                        <xsd:element name="content"
type="xsd:base64Binary"

xmime:expectedContentTypes="application/octet-stream"

xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/>
                                </xsd:all>
                        </xsd:complexType>
                </xsd:element>
                </xsd:schema>
        </types>

   <message name="SayHelloRequest">
      <part name="firstName" type="tns:myContent"/>
   </message>
   <message name="SayHelloResponse">
      <part name="greeting" type="xsd:string"/>
   </message>

   <portType name="Hello_PortType">
      <operation name="sayHello">
         <input message="tns:SayHelloRequest"/>
         <output message="tns:SayHelloResponse"/>
      </operation>
   </portType>

   <binding name="Hello_Binding" type="tns:Hello_PortType">
      <soap:binding style="rpc"
         transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="sayHello">
         <soap:operation soapAction="sayHello"/>
         <input>
            <soap:body
               encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
               namespace="urn:examples:helloservice"
               use="encoded"/>
         </input>
         <output>
            <soap:body
               encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
               namespace="urn:examples:helloservice"
               use="encoded"/>
         </output>
      </operation>
   </binding>

   <service name="Hello_Service">
      <documentation>WSDL File for HelloService</documentation>
      <port binding="tns:Hello_Binding" name="Hello_Port">
         <soap:address
            location="http://localhost:8080/soap/servlet/rpcrouter"/>
      </port>
   </service>
</definitions>



sef wrote:
>
> Hello,
>
> I'm using a WSDL first approach to develop my services. I'd like to use
> MTOM
> in one of my services. This hasn't been a problem until I realized that
> reading all the data into a byte[] and sending it over to my service
isn't
> the best option to go with. Xfire supports streaming with DataSource but
I
> cannot nail down my WSDL in such a way that the WsGenTask would generate
> me
> appropriate stubs and interfaces to support DataSource as a parameter.
The
> solution suggested here (
> http://article.gmane.org/gmane.comp.java.xfire.user/3534/match=mtom+wsdl
)
> didn't quite work for me.
>
> Defining an element like this <xs:element name="teset"
> type="xs:base64Binary"
> xmime:expectedContentTypes="application/octet-stream"
> xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/> still gives me
>
>     public String myOperation(
>         @WebParam(name = "teset", targetNamespace = "
> http://example.com/myservice";)
>         byte[] teset);
>
> Even if I set "image/jpeg" as the expectedContentTypes I still end up
with
> a
> byte[].
>
> Any help or suggestions appreciated!
>
> Thanks,
>   sefanovic
>
>

--
View this message in context:
http://www.nabble.com/Generating-service-stubs-for-MTOM-tf3596173.html#a10057056
Sent from the XFire - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email




--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog

Reply via email to