JBoss seam を使用して開発された Web アプリケーションのフロントエンドに取り組んでいます。ユーザー ログイン時にエラーが発生しましたNullPointerException
が、それがどのように発生するのかわかりません。ログに基づいた要約を次に示します。
ユーザーがログインしようとすると、LoginBean の認証メソッドが実行されました
public class LoginBean{
//both from org.jboss.seam.security package
@In
private Credentials credentials
@In
private Identity identity
public boolean authenticate(){
...
//false
logger.info(identity.getCredential null? == " + identity.getCredential==null);
//this returns true
result = webAuthentication.login(credential.getUsername(), credential.getPassword());
return result;
}
}
このコードでは、ID オブジェクトの資格情報属性に引き続きアクセスできます。認証を実行した後、ログには別のクラスのメソッドが実行されたことが示されます。
public class LoginControllerBean{
@In
private Identity identity; //org.jboss.seam.security
@Observer("org.jboss.seam.security.loginSuccessful")
@Begin(join = true)
public void updateSessionUserStats(){
//i can still see this in the log
logger.info("Login successful. updating sessionUserInfo....");
//throws NullPointerException
logger.info("check identity.getCredential if null == " + identity.getCredential());
sessionUser = new SessionUser();
//if I remove the log above this call will throw NullPointerException
sessionUser.setUsername(identity.getCredentials().getUsername());
}
}
@Observer(...loginSuccessful)
認証直後にアノテーション付きのメソッドが実行されたので、ログインは成功したと思います。
1 番目と 2 番目のクラスの両方の ID オブジェクトは、最初のコードでは問題ないのに、2 番目のコードでは@In annotation.
なぜですか?によって注入されます。問題の詳細を説明できない場合identity.getCredentials() throws nullPointerException
は、何が原因である可能性がありますか。dentity.getCredentials() throwing nullPointerException?
フロントエンド コードにしかアクセスできません。ありがとうございます。