• Andy Wilkinson's avatar
    Use ResourceConfig customization to register endpoints with Jersey · 8f72ca65
    Andy Wilkinson authored
    Previously, actuator endpoints were registered with Jersey upon
    injection of the ResourceConfig bean into a registrar class rather than
    using a ResourceConfigCustomizer. This was done to fix a problem
    when running the Actuator on a separate port where the main application
    context's customizers were also applied to the management context,
    breaking the singleton contract for those resources. This approach
    meant that the registration could be performed at any point after the
    ResourceConfig had been created. When Jersey's configured as a Filter
    this resulted in the registration failing as the attempt was being made
    after the Filter lifecyle callbacks which make the ResourceConfig
    immutable.
    
    This commit reworks the endpoint registration to be performed using a
    ManagementContextResourceConfigCustomizer, a resource config customizer
    that's only applied to the ResourceConfig that's used by the Actuator.
    When there's a separate management context, this ResourceConfig is
    created by the Actuator's auto-configuration and the management context
    resource config customizers are applied to it during its creation. The
    main application's customizers are not applied. When the actuator is
    using the same context as the main application, this ResourceConfig is
    created by the main application. In this case a
    ResourceConfigCustomizer is defined that delegates to all
    ManagementContextResourceConfigCustomizers, allowing them to register
    the actuator endpoints with the main ResourceConfig.
    
    Fixes gh-25262
    8f72ca65
Name
Last commit
Last update
..
src Loading commit data...
build.gradle Loading commit data...