1

JDK 1.6 または JDK 1.5 で「KeyTabKeytab のインスタンスを取得できませんでした」という問題が発生しています。

JDK 1.6 または 1.5 でのこの問題の原因はsun.security.krb5.internal.ktab.KeyTab.getInstance(java.lang.String s)、keytab ファイルのインスタンスを作成するメソッドが、このメソッドが同期されていないために、keytab ファイルを適切にロードできなかったためです。

この問題は、私たちの環境で 100 ユーザーの負荷テストを一貫して行ったときに発生していました。SUN コードを調べたところ、メソッド " sun.security.krb5.internal.ktab.KeyTab.getInstance(java.lang.String s)" の同期が欠落していることがKeyTab.getInstance(java.lang.String s)わかりました。. したがって、上記の問題を回避するために、以下に示すようにコードに同期を追加しました。Sun ライブラリが各ログイン コンテキストの keyTab をロードする方法がわからないためです。

LoginContext loginContext = new LoginContext(contextName);
synchronized(KerberosUtility.class)
{
loginContext.login();
}

メソッド " sun.security.krb5.internal.ktab.KeyTab.getInstance(java.lang.String s)" は JDK 1.7 で同期されるため、上記のコード スニペットの で囲まれている同期ブロックを削除する予定ですloginContext.login()

同期を削除すると、何か問題が発生しますか?

以前にこの問題とその解決策に遭遇しましたか?

4

0 に答える 0