[
https://issues.jboss.org/browse/WFLY-10025?page=com.atlassian.jira.plugin...
]
Scott Marlow commented on WFLY-10025:
-------------------------------------
[
https://docs.oracle.com/javaee/7/api/javax/persistence/spi/ClassTransform...]
is passed a byte[] and returns modification in the returned byte[] that represents the
last modified copy of the byte[].
If DelegatingClassFileTransformer is changed to operate on byte buffers,
JPADelegatingClassFileTransformer#transform will need to accept/return a byte buffer, but
JPADelegatingClassFileTransformer#transform still needs to pass byte[] to
[JPADelegatingClassFileTransformer].
I'm not sure that we can avoid the extra whole-byte-array copy, especially if the JPA
persistence provider transforms the class, which returns a new byte[] that we need to
return a new ByteBuffer wrapper for.
I'm not sure that implementing this on top of the JPA
[
javax.persistence.spi.ClassTransformer|https://docs.oracle.com/javaee/7/a...]
interface will save us memory.
Warning: if [WFCORE-3685] changes
org.jboss.as.server.deployment.module.DelegatingClassFileTransformer to only operate on
ByteBuffers, WF will have compile errors, so we will need to sync changing both projects
or introduce a new DelegatingClassFileTransformerByteBuffered class so current callers
aren't impacted.
Use new org.jboss.modules.ClassTransformer interface instead of
j.l.i.ClassFileTransformer
------------------------------------------------------------------------------------------
Key: WFLY-10025
URL:
https://issues.jboss.org/browse/WFLY-10025
Project: WildFly
Issue Type: Enhancement
Components: JPA / Hibernate
Reporter: David Lloyd
Assignee: Scott Marlow
Priority: Minor
The JPA classes use {{java.lang.instrument.ClassFileTransformer}} for class
transformation, however this style of transformer incurs an extra whole-byte-array copy
when loading memory-mapped classes or using other resource loaders which operate on byte
buffers.
After the Modules 1.8.0.Final upgrade, switch to using
{{org.jboss.modules.ClassTransformer}} instead.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)