Robbie Gemmell created ARTEMIS-5711:
---------------------------------------

             Summary: Enable support for building and running on Java 25
                 Key: ARTEMIS-5711
                 URL: https://issues.apache.org/jira/browse/ARTEMIS-5711
             Project: ActiveMQ Artemis
          Issue Type: Improvement
    Affects Versions: 2.43.0
            Reporter: Robbie Gemmell
            Assignee: Robbie Gemmell
             Fix For: 2.44.0


The Java SecurityManager was deprecated in Java 17 for removal, with no aim to 
replace the functionality. The Subject class also uses parts of the 
SecurityManager API, but it has its own usages beyond the SecurityManager 
functionality, so replacement functionality for the affected methods were added 
in Java 18 in the Subject.current() and Subject.callAs(..) methods.

Java 23 began the process for removing the SecurityManager implementation, 
reimplementing the Subject methods with both the old and newer behaviours, and 
making Subject.getSubject(..) throw UnsupportedOperationException unless an 
option flag is used to enable support for a SecurityManager (still without 
actually needing to have an SM in use). [Java 24 actually removed the 
SecurityManager implementation|https://openjdk.org/jeps/486] , and made 
Subject.getSubject() always throw UnsupportedOperationException. As a result of 
these changes, building and testing Artemis does not work on Java 23+ 
currently, and there are issues running on Java 23+ without at least disabling 
the AuditLogging functionality that uses Subject.getSubject(..). These issues 
can be seen discussed in the referenced ARTEMIS-4975 and ARTEMIS-5374. Though 
the other SecurityManager APIs are still present and 'functional' (effectively 
passthroughs), the APIs will be removed in a future JDK which will itself 
present another issue to building and running on those JDKs

This Jira seeks to enable building/testing and running on Java 25 and beyond by 
addressing these issues. To achieve this, references to the SecurityManager / 
Subject APIs affected will be contained to a wrapper shim, with an 
implementation using the old methods targeting Java 17-23, and a second shim 
implementation using the new Subject methods (and not using any SecurityManager 
methods at all) targeting Java 24+ and thus enabling Java 25 support and 
avoiding issues when the old APIs are later removed. (NOTE: on Java 23 this 
approach will still requiring either the flag to enable SecurityManager 
support, or disabling the audit logging to avoid it calling 
Subject.getSubject(..), if not just upgrading to e.g a supported Java 25 
release)

Whilst it will still be possible to run/build/test on Java 17+, a side effect 
of this approach will be requiring that releases are created using Java 25, 
which was [discussed and agreed on the mailing 
lists|https://lists.apache.org/thread/7vspfpmfnfqd6fmvpjzm0kr59b5dm9j2].



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to