JMXManager.java 文件源码

java
阅读 21 收藏 0 点赞 0 评论 0

项目:openfire 作者:
private void start() {

    setContainer(new MBeanContainer(ManagementFactory.getPlatformMBeanServer()));
    getContainer().addBean(org.eclipse.jetty.util.log.Log.getLog());

    int jmxPort = JMXManager.getPort();
    String jmxUrl = "/jndi/rmi://localhost:" + jmxPort + "/jmxrmi";
    Map<String, Object> env = new HashMap<String, Object>();
    if (JMXManager.isSecure()) {
        env.put("jmx.remote.authenticator", new JMXAuthenticator() {
            public Subject authenticate(Object credentials) {
                if (!(credentials instanceof String[])) {
                    if (credentials == null) {
                        throw new SecurityException("Credentials required");
                    }
                    throw new SecurityException("Credentials should be String[]");
                }
                final String[] aCredentials = (String[]) credentials;
                if (aCredentials.length < 2) {
                    throw new SecurityException("Credentials should have at least two elements");
                }
                String username = (String) aCredentials[0];
                String password = (String) aCredentials[1];

                try {
                    AuthFactory.authenticate(username, password);
                } catch (Exception ex) {
                    Log.error("Authentication failed for " + username);
                    throw new SecurityException();
                }

                if (AdminManager.getInstance().isUserAdmin(username, true)) {
                    return new Subject(true,
                                       Collections.singleton(new JMXPrincipal(username)),
                                       Collections.EMPTY_SET,
                                       Collections.EMPTY_SET);
                } else {
                    Log.error("Authorization failed for " + username);
                    throw new SecurityException();
                }
            }
        });
    }

    try {
        jmxServer = new ConnectorServer(new JMXServiceURL("rmi", null, jmxPort, jmxUrl), 
                env, "org.eclipse.jetty.jmx:name=rmiconnectorserver");
        jmxServer.start();
    } catch (Exception e) {
        Log.error("Failed to start JMX connector", e);
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号