Hello. I'm not sure i have understood it all. Sincerly, i remember, years ago, i had a look at the CORBA/GIOP/IIOP marshalling protocols, and finished the day with the same headache ! But, once more, we were lucky : we had IDL to write our interfaces...
As i understand, wsdl doesn't give a clear difference between strict document style, and a wrapped form, and both client and server must have some code to serialize or deserialize a multi-part body according to, respectively, the client data form or the server implementation form. I suppose stubs do that. Despite my problems with the java2wsdl task, i have finally use a 'wrapped' axis wsdl to generate my client stubs for a single operation service that takes a simple javabean argument (a string and an int). I use the SUN WTK 2.1 with its first JSR172 implementation, that only supports the document/literal as specified. The service interface has been generated with 2 arguments : the string and the int. In a former test, using a true document/literal wsdl, generated with the SUN JWSDK 1.3, the generated operation had a single argument of a generated javabean type, as expected. In this test case, a 2 attributes bean generates a 2 parameters method, but in a true project with 50 attributes javabeans... supposing client and server can communicate ! My deduction : 'wrapped' is not 'document' for JSR172 ! I think i've read the JSR172 requires WS-I Basic Profile compliance... Philippe Maseres <<<Philippe>>> -----Message d'origine----- <<<Philippe>>> De : Jeff Greif [mailto:[EMAIL PROTECTED] <<<Philippe>>> Envoyé : mardi 21 décembre 2004 17:07 <<<Philippe>>> À : [EMAIL PROTECTED] <<<Philippe>>> Objet : Re: java2wsdl ant task for document/literal <<<Philippe>>> <<<Philippe>>> <<<Philippe>>> Here is a wsdl-centric way of looking at the 'wrapped' form: <<<Philippe>>> <<<Philippe>>> If the wsdl is for a doc/lit operation, regardless <<<Philippe>>> of wrapping, the wire <<<Philippe>>> format is fixed by the wsdl. If the request message <<<Philippe>>> has parts p1..n <<<Philippe>>> specified by elements e1..n, the soap body must be <<<Philippe>>> <Body> <<<Philippe>>> <e1>...</e1> <<<Philippe>>> ... <<<Philippe>>> <en>...</en> <<<Philippe>>> </Body> <<<Philippe>>> <<<Philippe>>> For doc/lit operations conforming to the WS-I Basic <<<Philippe>>> Profile 1.0, there will <<<Philippe>>> be only one part. <<<Philippe>>> <<<Philippe>>> Independent of the WSDL and one another, the client <<<Philippe>>> or the server or both <<<Philippe>>> may treat a one-part operation as wrapped. This <<<Philippe>>> means that if element e1 is <<<Philippe>>> of type T1, where type T1 is <<<Philippe>>> <complexType name="T1"> <<<Philippe>>> <sequence> <<<Philippe>>> <element name="a" type="A"/> <<<Philippe>>> <element name="b" type="B"/> <<<Philippe>>> <element name="c" type="C"/> <<<Philippe>>> </sequence> <<<Philippe>>> </complexType> <<<Philippe>>> <<<Philippe>>> then a client deployed as wrapped must provide 3 <<<Philippe>>> items serializable to type <<<Philippe>>> A, type B and type C. The implementation of the <<<Philippe>>> client will assemble them <<<Philippe>>> into a proper e1 element to send to the server. <<<Philippe>>> <<<Philippe>>> Similiarly, if the server implementation is deployed <<<Philippe>>> as wrapped, the server <<<Philippe>>> implementation will disassemble the e1 element that <<<Philippe>>> arrives over the wire <<<Philippe>>> and call the implementation method with 3 <<<Philippe>>> programming language objects which <<<Philippe>>> are deserialized representations of types A, B and C <<<Philippe>>> respectively. <<<Philippe>>> <<<Philippe>>> The wrapped form makes either the client or the <<<Philippe>>> server side look more like <<<Philippe>>> an RPC call. <<<Philippe>>> <<<Philippe>>> If the client is not deployed as wrapped, it must <<<Philippe>>> provide a single parameter <<<Philippe>>> which serializes into an e1 element of T1 type. If <<<Philippe>>> the server is not <<<Philippe>>> deployed as wrapped, its implementation method is <<<Philippe>>> called with a single <<<Philippe>>> argument, a deserialized form of the e1 element <<<Philippe>>> (usually a DOM Element). <<<Philippe>>> <<<Philippe>>> .Net and Axis contain what is essentially a <<<Philippe>>> heuristic for having some <<<Philippe>>> clients and services be deployed as wrapped by <<<Philippe>>> default. One of the <<<Philippe>>> conditions tested in this heuristic is that the e1 <<<Philippe>>> element of the request <<<Philippe>>> have the same qname as the web service operation. <<<Philippe>>> <<<Philippe>>> Note that there is no way to indicate anything about <<<Philippe>>> wrapping in the wsdl, <<<Philippe>>> at least not without additional extensions. The <<<Philippe>>> fixed wire format for the <<<Philippe>>> transmitted SOAP decouples the client and server <<<Philippe>>> from one another in whether <<<Philippe>>> wrapping is used for a particular operation. <<<Philippe>>> <<<Philippe>>> Jeff <<<Philippe>>> <<<Philippe>>> ----- Original Message ----- <<<Philippe>>> From: "Daniel Beland" <[EMAIL PROTECTED]> <<<Philippe>>> To: <[EMAIL PROTECTED]> <<<Philippe>>> Sent: Tuesday, December 21, 2004 12:53 AM <<<Philippe>>> Subject: Re: java2wsdl ant task for document/literal <<<Philippe>>> <<<Philippe>>> <<<Philippe>>> > <<<Philippe>>> > <<<Philippe>>> > In fact, to be more precise, it means that there <<<Philippe>>> is a schema element, with <<<Philippe>>> > the same name as the operation, that contains <<<Philippe>>> (wraps) the actual document <<<Philippe>>> > element representing all the parameters. <<<Philippe>>> > <<<Philippe>>> > ie: <<<Philippe>>> > <<<Philippe>>> > wrapped <<<Philippe>>> > <A> <<<Philippe>>> > <AElement/> (of type X) <<<Philippe>>> > </A> <<<Philippe>>> > <<<Philippe>>> > document <<<Philippe>>> > <AElement/> (of type X) <<<Philippe>>> > <<<Philippe>>> > I believe this is not part of WS-I and was defined <<<Philippe>>> by Microsoft only. I <<<Philippe>>> > used to work this way but after some <<<Philippe>>> incompatibilities I switched to plain <<<Philippe>>> > doc/lit instead. <<<Philippe>>> > <<<Philippe>>> > If you start with a wsdl, I find it easier than <<<Philippe>>> wrapped, and by having <<<Philippe>>> > significant names for the elements you don't miss <<<Philippe>>> any clarity in the SOAP <<<Philippe>>> > body. <<<Philippe>>> > <<<Philippe>>> > The java portion is nearly identical (Single java <<<Philippe>>> object with getX() <<<Philippe>>> > methods instead of all unwrapped parameters directly). <<<Philippe>>> > <<<Philippe>>> > <<<Philippe>>> > > Ephemeris Lappis a écrit : <<<Philippe>>> > > <<<Philippe>>> > >>I'm not a SOAP expert ! I think i had understood <<<Philippe>>> the difference between <<<Philippe>>> > >>document and wrapped styles, and i suppose tools <<<Philippe>>> that will process the <<<Philippe>>> > >>repective wsdl files will not generate similar <<<Philippe>>> codes : both use xml <<<Philippe>>> > >> messages <<<Philippe>>> > >>without soap encoding, but in document mode the <<<Philippe>>> javabeans arguments of <<<Philippe>>> > >>operations must be made back from the wsdl as <<<Philippe>>> is, and not as distinct <<<Philippe>>> > >>primitive arguments... <<<Philippe>>> > >> <<<Philippe>>> > >> <<<Philippe>>> > > Actually the only difference between wrapped and <<<Philippe>>> document is the <<<Philippe>>> following <<<Philippe>>> > > : <<<Philippe>>> > > in wrapped mode, you get the name of the <<<Philippe>>> operation as the soap body's <<<Philippe>>> > > root element. <<<Philippe>>> > > <<<Philippe>>> > > Then, you're still able to use either javabeans <<<Philippe>>> arguments or primitive <<<Philippe>>> > > arguments ... or both :) <<<Philippe>>> > > <<<Philippe>>> > >>In my case, i can't choose the encoding mode : <<<Philippe>>> the targetted service <<<Philippe>>> must <<<Philippe>>> > >> be <<<Philippe>>> > >>used by J2ME clients, and, if possible, using <<<Philippe>>> the recent JSR172 <<<Philippe>>> > >>specification that only supports "document style <<<Philippe>>> with literal use".. <<<Philippe>>> > >> <<<Philippe>>> > >> <<<Philippe>>> > > Here, we all agree with you :) <<<Philippe>>> > > <<<Philippe>>> > > -- <<<Philippe>>> > > Julien <<<Philippe>>> > > <<<Philippe>>> > <<<Philippe>>>