jaxws异常/错误处理

时间:2013-02-05 20:16:24

标签: java jax-ws

我尝试使用jre5JAX-WS RI 2.1.3构建wsdl客户端,这是我的第一次见证。我使用来自wsdl2java的{​​{1}}工具创建了类,并在客户端周围编写了包装类,如下所示:

cxf

我无法理解我如何在public class RequestHelper { private DataLoadService service = new DataLoadService(); private DataLoadServiceSoap client; private static String token; //....my constructor.... public void sendData(data){ try{ if (tokenIsExpired()){ renewToken(); } client.sendData(data, this.token); }catch(SOAPFaultException e){ //...work with e } } } 方法中处理异常。我的意思是,例如,在HTTP中我们有sendData,我们可以读取状态代码并确定我们从服务器获得的错误类型以及我们如何处理它们。
在我的情况下,我有令牌过期时间的问题。有时status codes请求会长时间进入服务器。当请求已经在服务器上时,令牌不再有效,然后我得到文本消息“Token expired”的异常。我想分别捕获这种类型的异常,如下所示:

sendData

我如何使用public class RequestHelper { private DataLoadService service = new DataLoadService(); private DataLoadServiceSoap client; private static String token; //....my constructor.... public void sendData(data){ try{ if (tokenIsExpired()){ renewToken(); } client.sendData(data, this.token); }catch(SOAPFaultException e){ //...work with e }catch(TokenExpiredException e){ renewToken(); client.sendData(data, this.token); } } } 库实现这一目标?

UPD:

JAX-WS RI 2.1.3

1 个答案:

答案 0 :(得分:0)

从服务器中找出作为SOAPFaultException的一部分返回的内容。如果Exception包含错误消息,那么我们可以写下面的内容。注意:错误代码将是处理此问题的最佳方式。

    try{
         if (tokenIsExpired()){
            renewToken();
         }
         client.sendData(data, this.token);
       }catch(SOAPFaultException e){
           if(e.getFault().getFaultString().equalsIgnoreCase("Token expired") ) {
               renewToken();
               client.sendData(data, this.token);
           }
           ......
       }            

另一种方法是从服务器抛出自定义SOAP异常,并带有错误代码和错误消息,并在代码中处理