One important addendum to my note about writing a Handler that
overrides generateWSDL():

>This code belongs in a Handler in the requestFlow

This Handler must be invoked in the *responseFlow*, not the requestFlow.
If you're calling MessageContext.setProperty("WSDL", ...) in the
request instead, Axis will clobber whatever you put there.

Having now spent the better part of two days trying to override WSDL
generation via a Handler in Axis, it seems Axis doesn't make this very
easy. There are lots of details about how Axis generates WSDL that a
Handler writer needs to know. I found them only by reading the
BasicProvider sources.

It's also not very efficient. Near as I can tell, right now when
someone hits the ?WSDL URL on my server:
  Axis generates WSDL on its own
  My code ignores that and loads WSDL off disk
  My code converts the WSDL to a DOM object
  Axis converts the WSDL back into a String
  The WSDL is served.
Nothing is cached.


However, it *does* work :-)

Reply via email to