Completely agreed. Seems like Axis is dead in the water re: this matter. -----Original Message----- From: Manchaiah, Girish (LNG-DAY) [mailto:[EMAIL PROTECTED] Sent: Thursday, August 07, 2003 9:17 AM To: '[EMAIL PROTECTED]' 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. > > >>>>>> > > >>>>> > > >>> > > > > > >
