2

我有一个 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)

4

2 回答 2

0

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

于 2012-09-18T09:52:28.593 回答
0

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

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

顺便说一句:将错误原因放入异常字段是一个坏主意。您永远不会知道原因是否可序列化。

于 2012-05-21T20:47:20.570 回答