Hi,

This is a follow up of https://issues.apache.org/jira/browse/TOMEE-2619
When running on Java9+, the JVM does not allow anymore to attach an
instrumentation to the current JVM (self), unless you add the
flag -Djdk.attach.allowAttachSelf which is off by default.

So currently our javaagent required for OpenJPA for instance fail

> Caused by: java.io.IOException: Can not attach to current VM
>  at 
> jdk.attach/sun.tools.attach.HotSpotVirtualMachine.<init>(HotSpotVirtualMachine.java:75)
>  at 
> jdk.attach/sun.tools.attach.VirtualMachineImpl.<init>(VirtualMachineImpl.java:56)
>  at 
> jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:58)
>  at 
> jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:207)
>  ... 43 more
> INFO - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested 
> installation of a ClassFileTransformer which requires a JavaAgent.  See 
> http://tomee.apache.org/javaagent.html
>
>
I looked at different options.
Of course short term, I'll go with adding the flag so we can focus on Java
11 support.
Long term, I'm wondering if we should have some trick like bytebuddy which
does a very good job. See discussion
https://github.com/raphw/byte-buddy/issues/295

and the agent attach code
https://github.com/raphw/byte-buddy/blob/master/byte-buddy-agent/src/main/java/net/bytebuddy/agent/ByteBuddyAgent.java#L659

What do you guys think?
Anyone willing to contribute that to TomEE?

ByteBuddy is ASL v2, so we can of course reuse some of its code.

--
Jean-Louis Monteiro
http://twitter.com/jlouismonteiro
http://www.tomitribe.com

Reply via email to