0

ユーザーをログインさせる RPC サービスがあります。ユーザー名とパスワードが有効であれば、すべてうまくいきます。ただし、ユーザー名とパスワードが有効でない場合、サーバー側のコードは正常に実行されているように見えonFailure()ますが、コールバックのメソッドが起動されます。onFailure()メソッド自体以外にエラーや例外はありません。クライアント側に表示される例外は、一般的な「500 The call failed on the server; see server log for details」です。

実行時に例外がスローされないように、すべてのコードを 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 が返されれば問題ありません。はfalse を返すonFailure()場合にのみ発生します。user.isValid()

私はこれに困惑しているので、デバッグのヒントやアドバイスは大歓迎です!

4

1 に答える 1

0

ヒントをありがとう。結局、別のクラスで問題を見つけました。OmsError クラスは Serializable を実装しましたが、パラメーターのないコンストラクターはありませんでした。デバッグ時にメソッド全体を try/catch でラップしたため、例外が発生しなかった理由がわかりません。ただし、public OmsError(){} OmsError クラスに追加すると、すべてがうまく機能します。

于 2013-02-13T15:11:57.157 に答える