Hi Alan, On Fri, Mar 14, 2025 at 12:23 PM Alan Bateman <alan.bate...@oracle.com> wrote: > In this case, the initial module is a named module that doesn't transitively > require java.instrument so that module is not in the boot layer. If they > server was started with -javaagent then the java.instrument would be in the > boot layer. In JEP 261 the recommendation for container apps, like this one, > is to run with --add-module ALL-DEFAULT and it will ensure that any module in > the run-time that exports an API will be in the boot layer.
Thanks, trying ALL-DEFAULT, in conjunction with ALL-MODULE-PATH. > A comment in passing is that it's surprising that there are modules in ee$N > layers requiring java.instrument. The classes in this modules aren't normally > used by libraries and applications, instead they work as the side channel for > agents. With some archeology, I found: https://bugs.eclipse.org/bugs/show_bug.cgi?id=347110 :) TLDR: Spring had (has?) a mechanism to instrument loaded class, I assume for dependency injection. The Spring agent requires custom class loaders to have an `addTransformer(ClassFileTransformer)` method, hence the dependency of Jetty's WebAppClassLoader to java.instrument. Thanks! -- Simone Bordet --- Finally, no matter how good the architecture and design are, to deliver bug-free software with optimal performance and reliability, the implementation technique must be flawless. Victoria Livschitz