openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pinaki Poddar <>
Subject Re: [jira] Commented: (OPENJPA-952) Utilize Sun JDK's Attach API to dynamically load the OpenJPA enhancer agent
Date Wed, 04 Mar 2009 03:54:05 GMT

  Can someone explain this deep interest to 'runtime enhancement'? In
production, no one in sane mind will attempt it. In development, what is the
real reason of bypassing build-time enhancement? An extra build step? Or is
it that there is a 'cool factor' in redefining a class on the fly? 
   No doubt, runtime enhancement is a difficult problem -- but what extra
value does it add? 

JIRA wrote:
>     [
> ] 
> Rick Curtis commented on OPENJPA-952:
> -------------------------------------
> Yes I think it would be possible to move the loading of the agent into the
> factory ctor. It would close the window a little, but the window will
> still exit. I'll update the patch I'm working on.
> If an Entity class is loaded by the JVM before the agent is loaded, that
> class will fallback to subclassing enhancement. In the small tests that I
> have run on my machine, bytecode enhacement plays nicely with subclassing
> enhancement. I'll look into whether or not it would be possible to
> redefine a class that has already been loaded. I'll tell you that it
> doesn't look promising... see below.
> ...
> The redefinition may change method bodies, the constant pool and
> attributes. The redefinition must not add, remove or rename fields or
> methods, change the signatures of methods, or change inheritance. These
> restrictions maybe be lifted in future versions. 
> ...
>> Utilize Sun JDK's Attach API to dynamically load the OpenJPA enhancer
>> agent
>> ---------------------------------------------------------------------------
>>                 Key: OPENJPA-952
>>                 URL:
>>             Project: OpenJPA
>>          Issue Type: Improvement
>>          Components: kernel
>>    Affects Versions: 2.0.0
>>         Environment: Sun 1.6 JDK. 
>> Note: The Attach API is ONLY a part of the JDK, not the SDK.
>>            Reporter: Rick Curtis
>> When running in a JSE environment, OpenJPA could use the Attach API to
>> dynamically load the enhancer agent at runtime. Dynamically loading the
>> enhancer means that an OpenJPA developer doesn't need to configure a
>> -javaagent. Doing this would dramatically improve the out of box
>> performance, and also improve the ease of use. 
>> This improvement has the following caveats:
>> 1.) This API is ONLY a part of the 1.6 JDK.
>> 2.) This API is supported by only the Sun JDK.
>> 3.) If the agent is loaded from the earliest OpenJPA code, the agent will
>> be laoded when creating an EntityManager in the EntityManagerFactoryImpl.
>> If an Entity class is loaded by the JVM before the enhancer agent is
>> loaded, that class' byte code will not be enhanced. 
>> Attach API -
> -- 
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.

View this message in context:
Sent from the OpenJPA Developers mailing list archive at

View raw message