I've just wasted most of an afternoon trying to get a CF webservice working. Turns out the problem was not directly with the webservice but with the data that I was passing into it.
The data was coming from a WDDX packet which contained an Array. As documented by Cameron Childress there is a subtle problem when creating arrays from WDDX.
The problem is that the WDDX Array gets converted to a java.util.Vector instead of a coldfusion.runtime.Array object. CFDump shows the unWDDXed Array as a proper array – but if you try to pass it of so a WebService the webservice give the very helpful error:
argument type mismatch
This is a very nasty little bug and unfortunately is not fixed in CF8. Hopefully in CF9.