Jeter personnalisé exceptions dans JAX-WS

J'ai un JAX-WS web un service web méthode peut lever une exception.

@WebMethod
public Folder getTree() throws UnauthorizedException {
    //...
    //Get authorization data..
    //...
    if (!authorized) {
        throw new UnauthorizedException();
    }
    //...
}

Il fonctionne bien si l'utilisateur est autorisé, mais lorsque l'exception est levée, il ne génère pas de message SOAP avec une faute, c'est juste accidents de service web avec

SEVERE: Unauthorized
    ru.cos.xdoc.storage.UnauthorizedException: Unauthorized
    at ru.cos.xdoc.storage.Storage.getTree(Storage.java:136)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    ...

et ferme la connexion

HTTP/1.1 500 Internal Server Error
X-Powered-By: Servlet/2.5
Server: Sun GlassFish Enterprise Server v2.1.1
Content-Type: text/xml;charset="utf-8"
Transfer-Encoding: chunked
Date: Mon, 20 Sep 2010 15:43:59 GMT
Connection: close  

J'ai l'impression de manquer quelque chose de simple

MODIFIER Le problème s'est avéré ne surviennent que dans le cas où une exception est levée peu de temps après le début de la méthode web. Lorsqu'un retard est introduit avant le lancement d'une exception, comme

try {
    Thread.sleep(3000);
} catch (InterruptedException e) {
    e.printStackTrace();
}

throw new UnauthorizedException();

tout fonctionne bien.

Quelqu'un a une idée de ce que peut provoquer un tel comportement étrange?

InformationsquelleAutor greycat | 2010-09-20