2013-02-12 55 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