StatusCodeException Vs. RuntimeException no GWT

No meu aplicativo GWT. Substituí o RemoteServiceServlet para verificar se a sessão é válida logo antes da chamada do método de serviço. Estou tentando lançar uma RuntimeException ("sessão expirada") do servidor e gostaria que o cliente capturasse essa exceção do asynccallback onFailure ...

No cliente eu gostaria de: Asynccallback:

@Override
    public void onFailure(Throwable caught) {
        final String message = caught.getMessage();

        if (!isNullOrEmptyString(message) && message.contains("expired session")) {
            com.google.gwt.user.client.Window.Location.reload();
        }

    }

No entanto, no cliente, o objeto capturado ainda é um StatusCodeException e a mensagem ainda é o padrão "... Exceção no servidor ...". como posso substituir a exceção pelo menos a mensagem padrão para comparar se foi uma mensagem expirada da sessão que enviei do servido

obrigad

Oi Oi, Aqui está o meu código: -> Custom RemoteServiceServlet. Estou tentando "interceptar" todos os métodos antes de serem invocados. Verifico a sessão e lanço uma RuntimeException, se ela já expirou. Portanto, basicamente, não é o método declarado que lança a exceção, mas o RemoteServiceServlet personalizado. Ele ainda vai para "onFailure" no cliente assíncrono, mas o objeto Throwable ainda é do tipo "StatusCodeException" sem a mensagem EXPIRED_SESSION_MSG. Não sei como fazer isso funcionar. Obrigado

public class XRemoteServiceServlet extends RemoteServiceServlet {
    private final static String EXPIRED_SESSION_MSG = "ERROR: Application has expired session.";   
    @Override
    protected void onAfterRequestDeserialized(RPCRequest rpcRequest) {
        HttpServletRequest httpServletRequest = this.getThreadLocalRequest();
        HttpSession session = httpServletRequest.getSession(false);
        if (session != null) {
            final String sessionIdFromRequestHeader = getSessionIdFromHeader();
            if (!isNullOrEmptyString(sessionIdFromRequestHeader)) {
                final String sessionId = session.getId();

                if (!sessionId.equals(sessionIdFromRequestHeader)) {
                    throw new RuntimeException(EXPIRED_SESSION_MSG);
                }
            }

questionAnswers(2)

yourAnswerToTheQuestion