Hi, Deploying Doc/Lit services with Axis and taking the WSDL from the deployed service works quite well. The WSDL and the SOAP messages are looking all right for Doc/Lit. But there are still a few odd, methods with no parameters, methods returning void or the soapenc prefix in arrays.
Taking a WSDL document with an arbitrary schema doesn't work and can't work. I have found no facility to do the binding. Perhaps a binding framework could be used, but for the generation of the response there is no store for a mapping or a schema nor there is code that can produce a response obeying the rules in an arbitrary schema. Generating a service or a client out of a WSDL document using the conventions for wrapped services works quite well. There are some things hardcoded like methodname + "Response" but thats ok. I tried to unterstand how Axis supports Doc/Lit. Not only WSDL2Java and Java2WSDL are involved providers are playing also an important role. The code in the providers packages and the code in the org.apache.axis.wsdl.** packages is hard to read. There are a lot of duplicated or almost identical code spread over several classes. Just some examples: - The code of the method generateWSDL in BasicProvider and the subclass JavaProvider is almost identical. - Code to find the RPCCall in the body-Element is duplicated in RPCProvider, BSFProvider and COMProvider - ... Its hard to understand how Axis chooses or computes namespaces or how Java types are mapped to schema definition. I guess refactoring and simplifying the code in the providers.** and wsdl.** packages is a must before extending the support for Doc/Lit. Thomas
