Salve a tutti
Domanda da newbie sui web service.
Dopo aver costruito il mio web service con JAXRPC(che funziona), dopo aver costruito l'applicazione client che lo interroga (funzionante anche quella) dovrei gestire in qualche modo una eccezione personalizzata.
So che da lato client arrivano 3 tipi di eccezioni

java.rmi.RemoteException
javax.xml.rpc.soap.SOAPFaultException
a checked, user-defined exception

e fin qui ci siamo. Ho creato la mia eccezione (e il wsdl risulta corretto, almeno ha le specifiche riguardo la mia eccezione) e riporto di seguito quanto fatto

codice:
<wsdl:definitions name="Hello" targetNamespace="com.webservice.Hello" xmlns:ns1="http://schemas.xmlsoap.org/wsdl/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="com.webservice.Hello" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
  <wsdl:types> 
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="com.webservice.Hello" xmlns:tns="com.webservice.Hello" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<xsd:element name="MyException" type="tns:MyException" /> 
<xsd:complexType name="MyException"> 
<xsd:sequence /> 
</xsd:complexType> 
</xsd:schema> 
  </wsdl:types> 
  <wsdl:message name="loginResponse"> 
    <wsdl:part name="return" type="xsd:string"> 
    </wsdl:part> 
  </wsdl:message> 
  <wsdl:message name="MyException"> 
    <wsdl:part element="tns:MyException" name="MyException"> 
    </wsdl:part> 
  </wsdl:message> 
<wsdl:portType name="HelloPortType"> 
    <wsdl:operation name="login"> 
      <wsdl:input message="tns:login" name="login"> 
    </wsdl:input> 
      <wsdl:output message="tns:loginResponse" name="loginResponse"> 
    </wsdl:output> 
      <wsdl:fault message="tns:MyException" name="MyException"> 
    </wsdl:fault> 
    </wsdl:operation> 
</wsdl:portType>
<wsdl:binding name="HelloSoapBinding" type="tns:HelloPortType"> 
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> 
    <wsdl:operation name="login"> 
      <soap:operation soapAction="" style="rpc" /> 
      <wsdl:input name="login"> 
        <soap:body namespace="com.webservice.Hello" use="literal" /> 
      </wsdl:input> 
      <wsdl:output name="loginResponse"> 
        <soap:body namespace="com.webservice.Hello" use="literal" /> 
      </wsdl:output> 
      <wsdl:fault name="MyException"> 
        <soap:fault name="MyException" use="literal" /> 
      </wsdl:fault> 
    </wsdl:operation> 
  </wsdl:binding> 
  <wsdl:service name="Hello"> 
    <wsdl:port binding="tns:HelloSoapBinding" name="HelloPort"> 
      <soap:address location="http://localhost:8080/AnotherTest/Hello" /> 
    </wsdl:port> 
  </wsdl:service> 
</wsdl:definitions>
Ci sono anche altri metodi (non legati all'eccezione) che ho tagliato.


Qui c'è la mia dichiarazione di eccezione
codice:
@WebFault(faultBean="com.webservice.exception.MyException",
		name="MyException", 
		targetNamespace="com.webservice.Hello")
@SOAPBinding(style=Style.RPC)
public class MyException extends SOAPFaultException{

	private static final long serialVersionUID = 1L;

	protected String message;
	
 public MyException(String message) {
		super(new QName("http://schemas.xmlsoap.org/ws/2004/08/eventing",
		message,"wse"), "mess" ,message, null);
	}
}
e il suo uso

codice:
public String login(String name, String password) throws MyException {
		throw new MyException("Messsaggeeeeee");		
}
Il problema è che lato client ottengo sempre

codice:
javax.xml.rpc.soap.SOAPFaultException

	at com.sun.xml.rpc.client.StreamingSender._raiseFault(StreamingSender.java:508)
	at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:324)
	at com.sun.xml.rpc.client.dii.CallInvokerImpl.doInvoke(CallInvokerImpl.java:120)
	at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:503)
	at com.sun.xml.rpc.client.dii.CallInvocationHandler.doCall(CallInvocationHandler.java:138)
	at com.sun.xml.rpc.client.dii.CallInvocationHandler.invoke(CallInvocationHandler.java:102)
	at $Proxy0.login(Unknown Source)
	at dynamicproxy.DynamicProxyHello.main(DynamicProxyHello.java:42)
e non la mia eccezione (come desidero).

Ora mi chiedo, in cosa sbaglio?
Inoltre è possibile definire un'eccezione personalizzata che arrivi al client? Ho letto di no o che devo modificare il container (che gestisce la richiesta inviandomi la risposta).
Spero che qualcuno che ne sappia più di me sappia darmi una risposta