Agreed. Any volunteers? (I wish I could, but I can't. It may not be apparent from my messages, but I'm not a Java developer. I'm pretty knowledgeable about XML, SOAP, and WSDL, so I support this effort by answering questions.)
Anne ----- Original Message ----- From: "Manchaiah, Girish (LNG-DAY)" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Thursday, August 07, 2003 10:16 AM Subject: RE: WRAPPED services without wsdl > May be one of us should help make opensource WSTKs emit right WSDLs > > -----Original Message----- > From: Anne Thomas Manes [mailto:[EMAIL PROTECTED] > Sent: Thursday, August 07, 2003 10:10 AM > To: [EMAIL PROTECTED] > Subject: Re: WRAPPED services without wsdl > > > I think you're being a little harsh, Richard. WSDL is a very complex beast. > I've been studying WSDL for a couple of years, now, yet I often need to > reference the spec when I answer questions about it. > > Stuart's correct -- a Web services toolkit should know how to spit out valid > WSDL. But doc/literal support has been an afterthought for most of the Java > toolkits. I've seen problems with doc/literal WSDL generation with Axis > (buggy), JAX-RPC RI (seriously buggy), and GLUE (minor bugs). I haven't seen > any bugs with WASP so far. I haven't tried BEA, Cape Clear, or XMLBus, > although I suspect that they handle doc/lit better than Axis does. > > I certainly agree with you that the best practice is always to start with > WSDL, but I don't think it's unreasonable to use a java2wsdl tool to > generate the first cut at the WSDL file. I also think it's helpful to have > some type of java2schema tool to generate xsd type descriptions of a Java > class. Particularly at these early stages. > > It would be nice if we had more tools to choose from -- particularly design > &development tools -- that would spit out valid doc/literal WSDL files. > These tools are coming, but for the moment, you still need to do a lot of > hand-crafting. > > In any case, for the moment I definitely recommend using one of the tools > listed below to help you create and validate WSDL files. > > Anne > > ----- Original Message ----- > From: "Hansen, Richard" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Thursday, August 07, 2003 9:28 AM > Subject: RE: WRAPPED services without wsdl > > > > Your argurment might be ok for service consumers. But if you are > developing > > services for others to consume then WSDL is the public interface of your > > service. If you don't/can't/won't understand the WSDL for your service > then > > you amybe shouldn't be publishing a web service. > > > > > -----Original Message----- > > > From: Stuart Barlow [mailto:[EMAIL PROTECTED] > > > Sent: Thursday, August 07, 2003 8:16 AM > > > To: [EMAIL PROTECTED] > > > Subject: Re: WRAPPED services without wsdl > > > > > > > > > But then I have to know all the details of WSDL? :-) > > > > > > As an application (vertical solution developer) I should not > > > have to know the intricacies of interface defn. That is why > > > CORBA is dead. Because it is disgusting to use. > > > > > > What is the point of a web services toolkit if it doesnt > > > understand WSDL? > > > > > > But then of course I could just dig out that W3C WSDL document. > > > :-) > > > > > > Hansen, Richard wrote: > > > > > > > Here are my steps. > > > > > > > > 1. Create WSDL > > > > 2. Run WSDL2Java to generate client and server classes. > > > > 3. Implement service using generated server skeleton. > > > > > > > > I am convinced that starting with WSDL is best. WSDL is the > > > public interface > > > > for you service. Starting with a WSDL file as the > > > definition avoids problems > > > > and suprises. If I can define in it in WSDL then I am > > > pretty sure axis will > > > > handle it. > > > > > > > > > > > > > > > >>-----Original Message----- > > > >>From: Stuart Barlow [mailto:[EMAIL PROTECTED] > > > >>Sent: Thursday, August 07, 2003 4:58 AM > > > >>To: [EMAIL PROTECTED] > > > >>Subject: Re: WRAPPED services without wsdl > > > >> > > > >> > > > >>Sorry to get back to this thread but... > > > >>With AXIS you dont deploy a WSDL you write/generate a wsdd file. > > > >> > > > >>So is the process... > > > >>1. Get Java interface I would like to convert to a web service > > > >>2. Run Java2WSDL to get WSDL > > > >>3. Fix errors in generated WSDL > > > >>4. Run WSDL2Java to generate client and server classes. > > > >>5. Implement service using generated server skeleton. > > > >> > > > >>All the above works without step 3 for the default of RPC/Encoded. > > > >>But RPC/Encoded is not recommended/supported in near future and > > > >>difficult to talk to from Microsoft clients. > > > >> > > > >>If I do the fixing in step 3 then I should have a much more > > > >>compatible web service. > > > >> > > > >>Thanks. > > > >>Stuart. > > > >> > > > >>Anne Thomas Manes wrote: > > > >> > > > >> > > > >>>You pretty much have to fix the WSDL. > > > >>>WSDL editors: > > > >>>- Cape Clear (http://www.capescience.com/downloads/wsdleditor/) > > > >>>- Omniopera (http://www.omniopera.com) > > > >>>- XMLSpy (http://www.altova.com/products_ide.html) > > > >>>- SOAPscope (http://www.mindreef.com/) > > > >>> > > > >>>Anne > > > >>> > > > >>>----- Original Message ----- > > > >>>From: "Irazabal, Alex" <[EMAIL PROTECTED]> > > > >>>To: <[EMAIL PROTECTED]> > > > >>>Sent: Monday, August 04, 2003 11:31 AM > > > >>>Subject: RE: WRAPPED services without wsdl > > > >>> > > > >>> > > > >>> > > > >>> > > > >>>>Thanks. If I use AXIS on both ends (say using WRAPPED > > > >> > > > >>services), do I > > > >> > > > >>>still > > > >>> > > > >>> > > > >>>>have the same issues? I have a couple of web services > > > >> > > > >>prototypes that > > > >> > > > >>>work, > > > >>> > > > >>> > > > >>>>so I am assuming ( :) ) that is the case...Also any > > > >> > > > >>suggestions on a WSDL > > > >> > > > >>>>editor/validator? > > > >>>>Alex > > > >>>> > > > >>>>-----Original Message----- > > > >>>>From: Anne Thomas Manes [mailto:[EMAIL PROTECTED] > > > >>>>Sent: Monday, August 04, 2003 11:26 AM > > > >>>>To: [EMAIL PROTECTED] > > > >>>>Subject: Re: WRAPPED services without wsdl > > > >>>> > > > >>>> > > > >>>>Generate the WSDL, then use a WSDL editor/validator to > > > >> > > > >>identify and work > > > >> > > > >>>>through the errors. Most of the errors relate to > > > namespace problems. > > > >>>>Java2WSDL generates an empty targetNamespace in the > > > >> > > > >><schema> definition. > > > >> > > > >>>>----- Original Message ----- > > > >>>>From: "Irazabal, Alex" <[EMAIL PROTECTED]> > > > >>>>To: <[EMAIL PROTECTED]> > > > >>>>Sent: Monday, August 04, 2003 10:56 AM > > > >>>>Subject: RE: WRAPPED services without wsdl > > > >>>> > > > >>>> > > > >>>> > > > >>>> > > > >>>>>Thanks to all who replied...one last question: How is one > > > >> > > > >>to avoid these > > > >> > > > >>>>>WSDL errors? Are they documented? Work-arounds? > > > >>>>>Thanks, > > > >>>>>A > > > >>>>> > > > >>>>>-----Original Message----- > > > >>>>>From: Anne Thomas Manes [mailto:[EMAIL PROTECTED] > > > >>>>>Sent: Monday, August 04, 2003 10:49 AM > > > >>>>>To: [EMAIL PROTECTED] > > > >>>>>Subject: Re: WRAPPED services without wsdl > > > >>>>> > > > >>>>> > > > >>>>>Alex, > > > >>>>> > > > >>>>>1. Using doc/literal on the wire reduces interoperability > > > >> > > > >>problems. The > > > >> > > > >>>>WS-I > > > >>>> > > > >>>> > > > >>>>>Basic Profile requires the use of literal. From the > > > >> > > > >>on-the-wire SOAP > > > >> > > > >>>>message > > > >>>> > > > >>>> > > > >>>>>perspective, WRAPPED and DOCUMENT are identical -- they > > > >> > > > >>both produce > > > >> > > > >>>>>document/literal on the wire. The only difference > > > between these two > > > >>>> > > > >>>>options > > > >>>> > > > >>>> > > > >>>>>is in what gets produced by Java2WSDL and WSDL2Java. When you use > > > >>> > > > >>>WRAPPED, > > > >>> > > > >>> > > > >>>>>your WSDL file uses certain naming conventions that cause > > > >> > > > >>WSDL2Java to > > > >> > > > >>>>>produce an interface that supports invocation like: > > > >>>>> string return = myProxy.methodName( param1, param2 ); > > > >>>>>When you use DOCUMENT, WSDL2Java produces an interface like: > > > >>>>> string return = myProxy.methodName( javaBean ); > > > >>>>> > > > >>>>>2. Clients figure out how to use your service by > > > >> > > > >>interpreting your WSDL > > > >> > > > >>>>>file. If you let Axis generate your WSDL file for a > > > >> > > > >>doc/literal service, > > > >> > > > >>>>>currently it produces errors. You know what format your > > > >> > > > >>service needs to > > > >> > > > >>>>>process the requests, so you can build a client manually > > > >> > > > >>using the call > > > >> > > > >>>>>object. But other developers don't know anything about the > > > >> > > > >>service other > > > >> > > > >>>>>than what the WSDL tells them. If your WSDL has errors, no > > > >> > > > >>other clients > > > >> > > > >>>>>will be able to access your service. > > > >>>>> > > > >>>>>Anne > > > >>>>> > > > >>>>> > > > >>>>>----- Original Message ----- > > > >>>>>From: "Irazabal, Alex" <[EMAIL PROTECTED]> > > > >>>>>To: <[EMAIL PROTECTED]> > > > >>>>>Sent: Monday, August 04, 2003 10:33 AM > > > >>>>>Subject: RE: WRAPPED services without wsdl > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>>>Anne, can you clarify a couple of things for me, please? > > > >>>>>>1) What is the benefit of doc/literal on the wire using WRAPPED > > > >>>> > > > >>>>services? > > > >>>> > > > >>>> > > > >>>>>>Why would one care what format is on the wire... > > > >>>>>>2) What do you mean "other clients won't be able to > > > >> > > > >>figure out how to > > > >> > > > >>>>>access > > > >>>>> > > > >>>>> > > > >>>>>>your service"? > > > >>>>>> > > > >>>>>>Thanks, > > > >>>>>>Alex > > > >>>>>> > > > >>>>>>[Irazabal, Alex] > > > >>>>>>-----Original Message----- > > > >>>>>>From: Anne Thomas Manes [mailto:[EMAIL PROTECTED] > > > >>>>>>Sent: Monday, August 04, 2003 10:22 AM > > > >>>>>>To: [EMAIL PROTECTED] > > > >>>>>>Subject: Re: WRAPPED services without wsdl > > > >>>>>> > > > >>>>>> > > > >>>>>> > > > >>>>>>I don't understand why you would try to create a WRAPPED > > > >> > > > >>web service > > > >> > > > >>>>>without > > > >>>>> > > > >>>>> > > > >>>>>>using WSDL? It doesn't make any sense. The whole point > > > >> > > > >>behind WRAPPED > > > >> > > > >>>is > > > >>> > > > >>> > > > >>>>>to > > > >>>>> > > > >>>>> > > > >>>>>>let you generate a client proxy object using WSDL2Java so > > > >> > > > >>that you can > > > >> > > > >>>>>>invoke the service using an RMI-style invocation > > > (method name with > > > >>>>>>parameters). From the client developer's point of view, > > > >> > > > >>WRAPPED makes > > > >> > > > >>>>the > > > >>>> > > > >>>> > > > >>>>>>service look and feel like rpc/encoded, but on the wire it's > > > >>>> > > > >>>>doc/literal. > > > >>>> > > > >>>> > > > >>>>>>But if you aren't using WSDL2Java, then you'll have to > > > >> > > > >>use the call > > > >> > > > >>>>>object. > > > >>>>> > > > >>>>> > > > >>>>>>I don't think that Axis provides a mechanism to > > > reference a schema > > > >>> > > > >>>file. > > > >>> > > > >>> > > > >>>>>It > > > >>>>> > > > >>>>> > > > >>>>>>only supports WSDL. Besides, Axis will always create a > > > >> > > > >>WSDL file for > > > >> > > > >>>you > > > >>> > > > >>> > > > >>>>>>when you deploy the service. The problem is that right now, the > > > >>>> > > > >>>>generated > > > >>>> > > > >>>> > > > >>>>>>WSDL will have errors in it, which means that other > > > >> > > > >>clients won't be > > > >> > > > >>>>able > > > >>>> > > > >>>> > > > >>>>>to > > > >>>>> > > > >>>>> > > > >>>>>>figure out how to access your service. > > > >>>>>> > > > >>>>>>Here's some sample client code for a typical WRAPPED service. It > > > >>> > > > >>>should > > > >>> > > > >>> > > > >>>>>look > > > >>>>> > > > >>>>> > > > >>>>>>pretty much identical to client code for an RPC service: > > > >>>>>> > > > >>>>>>package test.axis.wrapped.client; > > > >>>>>> > > > >>>>>>import javax.xml.namespace.QName; > > > >>>>>>import javax.xml.rpc.Service; > > > >>>>>>import javax.xml.rpc.ServiceFactory; > > > >>>>>>import java.net.URL; > > > >>>>>>import test.axis.wrapped.iface; > > > >>>>>> > > > >>>>>>public class AxisWrappedClient > > > >>>>>>{ > > > >>>>>> public static void main(String[]args) throws Exception { > > > >>>>>> String UrlString = "wsdl-url"; > > > >>>>>> String nameSpaceUri = "urn:axis.wrapped" > > > >>>>>> String serviceName = "WrappedService"; > > > >>>>>> String portName = "WrappedServicePort"; > > > >>>>>> > > > >>>>>> URL currWsdlUrl = new URL(UrlString); > > > >>>>>> ServiceFactory serviceFactory = > > > >> > > > >>ServiceFactory.newInstance(); > > > >> > > > >>>>>> Service currService = > > > >>> > > > >>>serviceFactory.createService(currWsdlUrl, > > > >>> > > > >>> > > > >>>>>> new QName(nameSpaceUri, serviceName)); > > > >>>>>> > > > >>>>>> Curr myProxy = (Curr) currService.getPort( > > > >>>>>> new QName(nameSpaceUri, portName), > > > >>>>>> test.axis.wrapped.iface.class); > > > >>>>>> > > > >>>>>> string return = myProxy.methodName( arg[0], arg[1] ); > > > >>>>>> > > > >>>>>> } > > > >>>>>>} > > > >>>>>> > > > >>>>>> > > > >>>>>>Note that test.axis.wrapped.iface is the interface generated by > > > >>>> > > > >>>>WSDL2Java. > > > >>>> > > > >>>> > > > >>>>>>Anne > > > >>>>>> > > > >>>>>> > > > >>>>>> > > > >>>>>>----- Original Message ----- > > > >>>>>> > > > >>>>>>From: Dimuthu Leelarathne > > > <mailto:[EMAIL PROTECTED]> > > > >>>>>>To: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > > >>>>>>Sent: Monday, August 04, 2003 12:42 AM > > > >>>>>>Subject: WRAPPED services without wsdl > > > >>>>>> > > > >>>>>> > > > >>>>>>Hi all, > > > >>>>>> > > > >>>>>>I'm trying to write a wrapped web service without using > > > >> > > > >>wsdl. I have > > > >> > > > >>>>some > > > >>>> > > > >>>> > > > >>>>>>simple basic questions, > > > >>>>>> > > > >>>>>>1. Where should I put the xml schema ? Should it be > > > inside wsdd or > > > >>>> > > > >>>>should > > > >>>> > > > >>>> > > > >>>>>I > > > >>>>> > > > >>>>> > > > >>>>>>put a reference to it in the wsdd ? > > > >>>>>> > > > >>>>>>2. I read something like this written by Anne ; > > > >>>>>> > > > >>>>>>The main reason that you want to use WRAPPED > > > >>>>>>is so that you can invoke your service using something > > > like this: > > > >>>>>>string ResponseInfo = service.SubscriptionRequest( > > > >> > > > >>usedId, password ); > > > >> > > > >>>>>>If this is the case how can I provide it in the client without > > > >>>>> > > > >>>>>instantiating > > > >>>>> > > > >>>>> > > > >>>>>>a call object ? Since wsdl is not used stubs, SDI and etc > > > >> > > > >>..... won't > > > >> > > > >>>be > > > >>> > > > >>> > > > >>>>>>created. So should I just anyway go ahead and use the > > > >> > > > >>call object ? > > > >> > > > >>>>>>Thank you, > > > >>>>>>Dimuthu. > > > >>>>>> > > > >>>>> > > > >>> > > > > > > > > > >
