Hi,
  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 [email protected] wrote:
> 
> 
>     [
> https://issues.apache.org/jira/browse/OPENJPA-952?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12678483#action_12678483
> ] 
> 
> 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.
> 
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/instrument/Instrumentation.html#redefineClasses(java.lang.instrument.ClassDefinition[])
> ...
> 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: https://issues.apache.org/jira/browse/OPENJPA-952
>>             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 -
>> http://java.sun.com/javase/6/docs/technotes/guides/attach/index.html
> 
> -- 
> 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: 
http://n2.nabble.com/-jira--Created%3A-%28OPENJPA-952%29-Utilize-Sun-JDK%27s-Attach-API-to-dynamically-load-the-OpenJPA-enhancer-agent-tp2417786p2420237.html
Sent from the OpenJPA Developers mailing list archive at Nabble.com.

Reply via email to