已检查的远程服务异常在tomcat中转换为StatusCodeException

时间:2012-05-21 09:32:56

标签: gwt gwt-rpc

我有一个GWT应用程序,它对RemoteService进行常规RPC调用,其方法可能抛出ServiceException:

public class ServiceException extends Exception implements java.io.Serializable {
    private static final long serialVersionUID = 1L;
    public ServiceException() {}
    public ServiceException(final Throwable cause) {
        super(cause);
    }
    public ServiceException(final String errorMsg) {
        super(errorMsg);
    }
}

这在开发模式下工作得非常好,我在onFailure异步回调中得到了预期的异常消息,但是当我编译应用程序并将其部署到tomcat时,我的异常被转换为

com.google.gwt.user.client.rpc.StatusCodeException: 500 The call failed on the server; see server log for details

就像在开发模式下一样,我的服务器日志显示了在抛出ServiceException之前我自己记录的预期异常原因。

我在谷歌看了这个,但找不到任何相关内容。

(我正在使用GWT 2.4,java 1.6和Tomcat 7.0.16开发Mac OS X Lion)

2 个答案:

答案 0 :(得分:0)

您的gwt-rpc servlet似乎无法正确处理异常。然后你的tomcat容器通过发送http-500错误页面来处理异常。通常异常应该导致http-200响应和gwt编码答案末尾的“EX”。开发模式使用某种码头容器运行。也许开发模式的jetty和tomcat之间存在一些差异导致了不同的行为。

请查看您的gwt-rpc servlet代码以找到原因。

btw:将错误原因放入异常字段是个坏主意。你永远不会知道原因是否可序列化。

答案 1 :(得分:0)

愚蠢的错误。我终于发现问题来自于我正在使用的java混淆器配置中的意外拼写错误。因为我在构建我在tomcat中部署的战争时重命名了我的类名。