Right now our architecture allows someone to directly set the "serviceHandler" in a MessageContext to be any Handler. However, even if you use the "handler" provider in WSDD, the specified Handler gets wrapped in a SOAPService (i.e. becomes the provider handler in the SOAPService), so in practice unless you get really deep into the API yourself, you're always going to have a SOAPService as the serviceHandler.
I'd like to make this explicit in the API, by making setService() (formerly setServiceHandler) in the MessageContext take a SOAPService argument. The reason for this is that there are several pieces of runtime metadata associated with a service which it would be nice to have in ALL cases, such as type mappings and service "style" (document or RPC). I'm currently working on adding <style>[document/rpc]</style> to WSDD, and having that do the right thing with WSDL generation, encoding, etc. and I'd like to avoid checking instanceof SOAPService all the time. If anyone sees problems with this, please let me know. --Glen