GWT RPC 失败,没有错误也没有异常

Posted

技术标签:

【中文标题】GWT RPC 失败,没有错误也没有异常【英文标题】:GWT RPC fails with no error and no exception 【发布时间】:2013-02-12 21:16:49 【问题描述】:

我有一个登录用户的 RPC 服务。如果用户名和密码有效,一切正常。但是,如果用户名和密码无效,服务器端代码似乎可以正常执行,但会触发回调的onFailure() 方法。除了onFailure() 方法本身之外,没有错误或异常。客户端出现的异常是通用的“500 服务器调用失败;有关详细信息,请参阅服务器日志”

我已将所有代码包装在一个 try/catch 块中,以确保在运行时不会引发异常。

这是有问题的方法:

public OmsConsumer login(String username, String password, String ip) 

    OmsUser user = auth.validate(username, password, ip);

    OmsConsumer consumer;

    if(user.isValid())
        logger.info("User is Valid");

        consumer = getConsumerByPersonId(user.getPersonId());       
    else 
        logger.info("User is INVALID");

        consumer = new OmsConsumer();

        consumer.setValid(false);
        consumer.setErrors(user.getErrors());

            logger.info("Errors: " + consumer.getErrors().size());
    
    return consumer;

同样,当user.isValid() 返回 true 时,没有问题。 onFailure() 仅在 user.isValid() 返回 false 时触发。

我被这个难住了,因此非常感谢任何调试技巧或建议!

【问题讨论】:

你在调试模式下通过服务器端的方法吗? 你查看过服务器日志吗? 如果您显示的代码是服务器端的,那么 try/catch 块在哪里? 我一直无法让调试模式正常运行。 是的,服务器日志现在显示错误。 【参考方案1】:

感谢您的提示。我最终在不同的班级发现了问题。 OmsError 类实现了 Serializable,但没有无参数构造函数。在调试时,我将整个方法包装在 try/catch 中,所以我不确定为什么我没有从中得到异常。但是,一旦我将 public OmsError() 添加到 OmsError 类中,一切正常。

【讨论】:

为清楚起见,OmsUser.getErrors 返回一个 OmsErrors 列表。 OmsError 没有被抛出,但它在序列化类中使用,因此序列化在从您正在调用的过程返回后失败

以上是关于GWT RPC 失败,没有错误也没有异常的主要内容,如果未能解决你的问题,请参考以下文章

状态码异常 (com.google.gwt.user.client.rpc.StatusCodeException: 404 <html>)

拦截 GWT RPC 的异步代理服务异常

GWT RPC 失败

servlet 的 GWT RPC 服务分配异常

运行 GWT 应用程序时出现异常

如何在 GWT RPC 中将异常从服务器传递到客户端