I think there is a workaround which may enable a slightly tweaked client to work on straight JAX-RPC and on Axis. You'd add a piece that looked up the type mappings for the types that are treated different in the two implementations, such as xsd:unsignedByte, xsd:anyURI and override the Axis default type mappings to agree with those of JAX-RPC. I haven't tried this exact thing, but I have done something similar, in mapping anyURI to and from String rather than some Axis class.
Something like this was needed in the deployment descriptor: <typeMapping deserializer="org.apache.axis.encoding.ser.SimpleDeserializerFactory" serializer="org.apache.axis.encoding.ser.SimpleSerializerFactory" languageSpecificType="java:java.lang.String" encodingStyle="" qname="xsd:anyURI"/>
This mapping could be made in your client java code instead if you were unwilling to have a different deployment descriptor for an axis-based client from that of a pure jax-rpc client.
So, I can use this method with the wsdl2java ant task to force a JAX-RPC compliant binding? I simply ask this because I've managed to get the classes generated without any usage of a deployment descriptor (wsdd?) so-far. Btw, I am RTFM, but there is so much of it and related SOAP stuff to read[1].
[1]: http://www.tbray.org/ongoing/When/200x/2004/09/21/WS-Research
-- Mike
