From a SOA perspective, when an exception occurs in the service processing, you should return a SOAP Fault so that the client can take appropriate action.
A status object is a good idea, in order to provide the client with structured information about the nature of the fault (like a specific type of Java Exception). However, that should be done by using a SOAP Fault to contain the status information.
In addition to the basic faultcode that SOAP specifies, the WSDL specification provides a mechanism for richer fault reporting using the
soap:fault element.
The soap:fault element specifies the contents of the SOAP Fault detail element contained in your SOAP Fault message. So, the detail element can contain the status object, and the structure of the status object is specified in the WSDL.
Further, a Java client, using JAX-WS, can take advantage of the soap:fault element in the WSDL. JAX-WS will generate a specific Exception class corresponding to each soap:fault. So, your status object will be mapped to a specific Exception class. And the client application code can then easily obtain information about the nature of the exception that occurred in the service by processing that exception.
SOAP Fault processing is covered in Chapters 6 (client) and 7 (service) of my book. Specifically sections 6.1 and 7.5 - where you will find code examples illustrating what I have described in this post.
Hope that helps!