Как бороться с SocketTimeoutException внутри Java Code / Webservices - PullRequest
0 голосов
/ 08 ноября 2011

Это мой код метода, показанный ниже

На самом деле это служит методом веб-сервисов.

public Response getData(ServiceRequest request)
{
    try
    {
        final   boolean toProceedorNot = validate(legdata);
        if (!toProceedorNot) {
            status.setErrorText(errorText);
            return response;
        } 
        else {
            // Some Processing is done here
            response.setMessage(result);
        }                           
    }

    catch(Exception e)
    {
        errorText = e.getMessage().toString();
        status.setErrorText(errorText);
        response.setStatus(status);
    }

    return response;
}

Если выполнение метода занимает больше времени, Apache CXF Framework создает исключение SocketTimeoutException

at java.lang.Thread.run(Thread.java:662)
    Caused by: java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:695)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:640)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1195)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2034)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2013)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1938)
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:626)
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)

Мой вопрос заключается в том, что, хотя генерируется исключение SocketTimeoutException, оно не входит в блок исключений.

Я не уверен, должен ли кто-то обрабатывать это исключение (клиент или метод реализации Webservices)

Но как поставщик веб-услуг, скажите, пожалуйста, как бороться с этим исключением?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...