2

オプションで保護できるJVMプロセスによって開始されたJMXサーバーがあります(今のところそうではないので、拡張可能な方法を検討する準備ができています)。たとえば、オプションとして、公式のチュートリアルを見て、今のところユーザー/パスワード認証を使用しても問題ありません。MBean は、Spring を介してデプロイされます (注釈アプローチが使用されます)。

ここで、MBean内からいくつかの追加アクションのユーザー名を取得したいと考えています。JMXテクノロジーでできることはありますか? はいの場合、どのように?:)

例:

public class MyMBean {

    public void myOp() {

        String userName = ... ?;  // or whatever object that can bring me the name

        makeSomethingWithUserName ( userName );

        doMyStuffHere();
    }
}

このチュートリアルを見つけましたが、glassfish 固有のようで、単純な Java ベースのソリューションを探しています。

どうもありがとう、良い一日を

4

1 に答える 1

1

これは機能するはずですが、サブジェクトはユーザーが認証された場合にのみ入力されます。ローカル JMX 接続では、空の Subject が返されます。

private String getUserName() {
    AccessControlContext acc = AccessController.getContext();
    Subject subject = Subject.getSubject(acc);
    if (subject != null)  {
    Set<JMXPrincipal> principals = subject.getPrincipals(JMXPrincipal.class);
    JMXPrincipal principal = principals.iterator().next();
    return principal.getName();
    }
    return "";
}
于 2012-10-17T08:46:07.303 に答える