This is a full-fledged, fast and scalable implementation of a JMX remote connector, with Java NIO-based networking on both client and server sides.
JMX service URLs are in the form service:jmx:jppf://<host>:<port>
Direct download: from the latest release, look for JPPF-6.2-beta-jmxremote-nio.zip
Maven Central: groupId: org.jppf, artifactId: jppf-jmxremote-nio
<dependency>
<groupId>org.jppf</groupId>
<artifactId>jppf-jmxremote-nio</artifactId>
<version>6.2</version>
</dependency>
jmx.remote.x.request.timeout
: maximum time in milliseconds to wait for a JMX request to succeed, default to 15,000 msjmx.remote.x.notifications.queue.size
: maximum size of the pending notifications queue for a JMX connection, defaults to 2000
jmx.remote.x.tls.enabled
: whether to use secure connections via TLS protocol, defaults to falsejmx.remote.x.tls.context.protocol
: javax.net.ssl.SSLContext protocol, defaults to TLSv1.2jmx.remote.x.tls.enabled.protocols
: a list of space-separated enabled protocols, defaults to TLSv1.2jmx.remote.x.tls.enabled.cipher.suites
: space-separated list of enabled cipher suites, defaults to SSLContext.getDefault().getDefaultSSLParameters().getCipherSuites()jmx.remote.x.tls.client.authentication
: SSL client authentication level: one of 'none', 'want', 'need', defaults to 'none'jmx.remote.x.tls.client.distinct.truststore
: whether to use a separate trust store for client certificates (server only), defaults to 'false'jmx.remote.x.tls.client.truststore.password
: plain text client trust store password, defaults to nulljmx.remote.x.tls.client.truststore.password.source
: Client trust store location as an arbitrary source, default to nulljmx.remote.x.tls.client.truststore.file
: path to the client trust store in the file system or classpath, defaults to nulljmx.remote.x.tls.client.truststore.source
: client trust store location as an arbitrary source, defaults to nulljmx.remote.x.tls.client.truststore.type
: trust store format, defaults to 'jks'jmx.remote.x.tls.truststore.password
: plain text trust store password, defaults to nulljmx.remote.x.tls.truststore.password.source
: trust store password as an arbitrary source, defaults to nulljmx.remote.x.tls.truststore.file
: path to the trust store in the file system or classpath, defaults to nulljmx.remote.x.tls.truststore.source
: trust store location as an arbitrary source, defaults to nulljmx.remote.x.tls.truststore.type
: trust store format, defaults to 'jks'jmx.remote.x.tls.keystore.password
: plain text key store password, defaults to nulljmx.remote.x.tls.keystore.password.source
: key store password as an arbitrary source, defaults to nulljmx.remote.x.tls.keystore.file
: path to the key store in the file system or classpath, defaults to nulljmx.remote.x.tls.keystore.source
: key store location as an arbitrary source, defaults to nulljmx.remote.x.tls.keystore.type
: key store format, defaults to 'jks'
Authentication is provided as an instance of JMXAuthenticator, passed on via the server environment property jmx.remote.authenticator
(also the Java constant JMXConnectorServer.AUTHENTICATOR).
On the client side, credentials are passed as a user-defined object via the connector environment property jmx.remote.credentials
(also the Java constant
JMXConnector.CREDENTIALS).
Authorization or ACL is provided via the server-side environment property jmx.remote.x.authorization.checker
(also the Java constant
JPPFJMXConnectorServer.AUTHORIZATION_CHECKER). The value can be either a Class
object, representing an implementation
of the interface JMXAuthorizationChecker, or a string that contains the fully qualified name of the class.
Authorization checks are performed against the Subject created by the JMXAuthenticator, if any is present. It is passed on to the JMXAuthorizationChecker via its setSubject(Subject) method.
Instead of implementing the JMXAuthorizationChecker interface, you may also extend the JMXAuthorizationCheckerAdapter (allows everything) or JMXAuthorizationDeniedAdapter (denies everything) class if you don't need to implement all the methods.
Unit tests are found in the test.org.jppf.jmxremote package of the tests module.