2013-02-12 53 views
0

我有一个RPC服务,在用户登录那个。如果用户名和密码是有效的,一切都很好。但是,如果用户名和密码是无效的,服务器端的代码似乎运行正常,但回调的onFailure()方法被触发。除了onFailure()方法本身之外,没有任何错误或例外。客户端出现的异常是通用的“500服务器上的调用失败;请参阅服务器日志以获取详细信息”GWT RPC失败,并没有错误,也不例外

我已将所有代码包装在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,是没有问题的。当user.isValid()返回false时才会触发onFailure()

我难倒就这一个,所以任何调试提示或建议是极大的赞赏!

+2

你去通过在调试模式下服务器端方法? – enrybo 2013-02-12 21:59:50

+0

你看过服务器日志吗? – 2013-02-12 22:07:06

+0

如果你显示的代码是服务器端,那么try/catch块在哪里? – SSR 2013-02-13 03:30:15

回答

0

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

+0

为了清楚起见,'OmsUser.getErrors'返回一个OmsErrors列表。 – gridDragon 2013-02-13 15:13:12

+0

OmsError没有抛出,但这样的序列化失败,从过程返回后,你在呼唤它是在序列化类中使用 – Piro 2017-10-04 07:40:11