<div dir="ltr"><div>Hi all,</div><div><br></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">I would like to add the <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/Instrumentation.html">Java Instrumentation</a> API</span></span></span><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"> to the extensions running under LibreOffice and written in Java</span></span></span><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">.</span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">After some testing, I manage to load the <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/Instrumentation.html">Instrumentation</a> agent at JVM startup, having taken care to add the necessary startup option (ie: -javaagent:/home/prrvchr/github/jdbcDriverOOo/source/UnoAgent/dist/UnoAgent.jar) and put this archive in the classpath (ie: Tools -> Options -> LibreOffice -> Advanced -> Java Options).</span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">UnoAgent.jar is an archive containing only one class which itself contains only two methods and this gives access to code injection and the possibility of modifying the search path of the system bootloader. </span></span></span><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">This currently allows me to be able to deploy an </span></span></span><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">SPI service type like </span></span></span><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><a href="http://System.LoggerFinder">System.LoggerFinder</a></span></span></span><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">, and to be able to be the provider for the <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/System.Logger.html">System.Logger</a> interface for all running applications on the JVM.</span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">If we want to make this feature accessible to any extension written in Java, it is necessary to make three modifications:
- Add the UnoAgent.jar archive to the SDK.</span></span><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">
- Add an entry in the LibreOffice configuration (ie: xcu file) to enable or disable instrumentation.</span></span><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">
- Load the JVM with the parameters needed for instrumentation depending on the configuration.</span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">Please let me know what you think about this.</span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb">Pierre<br></span></span></span></div><div><span class="gmail-HwtZe" lang="en"><span class="gmail-jCAhz gmail-ChMk0b"><span class="gmail-ryNqvb"><br></span></span></span></div></div>