JAX-RPC fills in two holes in the SOAP specification:
It defines a standard Java mapping for the SOAP encoding.
It tries to shield the Java developer from the specifics of XML coding.
The SOAP encoding specifies how to write, in XML, data types commonly found in programming languages: simple types (strings, numbers, Booleans, and more), as well as compound types (structs and arrays). What it does not specify, however, is the Java equivalent.
The same holds true for WSDL. It uses XML schemas to specify XML structures as input or output of operations, but it does not specify how to map those structures to Java (or any other programming language) objects.
Although it's obvious that a java.lang.String in Java should ...