Require opt-in for using unnamespaced mbean exports #67
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Some applications exports mbeans in one place, from one class loader,
and so they do not need namespacing as class name-generated mbean names
do not collide. Some applications use multiple class loaders and
therefore require additional configuration for exporting mbeans safely.
The
MBeanModuleprovides sufficient configuration options, allowingusers to bind
ObjectNameGenerator, but its default behavior turned outto be error-prone at least in projects such as Trino. It seems safer to
require explicit opt-in into unnamespaced exports.
This commit deprecates
MBeanModuleconstructor in favor of namedfactory methods for explicit declaration whether default
ObjectNameGeneratorshould be used, or custom one will be provided.The "for custom" factory creates a module that will fail to load unless
a custom
ObjectNameGeneratoris bound.The "for unnamespaced" creates a module with default
ObjectNameGenerator. The factory name is meant to be thought-provokingand therefore the name generator bound this way is not rebindable.
The
new MBeanModule()constructor is kept, but deprecated. It supportsthe original behavior allowing users to rebind name generator.
Motivation