Hi Mat. Yes, Contract-first is considered a best practice. Its the same as interface-based programming - the interface is the contract.
- Regarding the <?xml> processing instruction, it is because it needs to be the very first line in an xml document, but its the second line in your first post. I didn't notice that yesterday. Probably a copy/paste error. So we can ignore this one.
- But I have no idea why it might generate duplicate types. There are bugs that look similar. Could be a wsdl2java issue where it generates code instead of reporting an error. Don't know.
If you are using an older version of Axis, then you could try a newer version, maybe 1.4 or 1.5.
- As far as the namespaces changing, I have no idea.