From: Leonardo K. Shikida <shik...@gmail.com>
To: users@openjpa.apache.org
Cc: d...@openjpa.apache.org
Sent: Wednesday, 25 September 2013, 17:38
Subject: Re: Entitiy not enhanced
Hi
I could not make the runtime enhancement work for me too, so I am manually
enhancing during build time with a simple script.
public static void main(String[] args) {
Collection<File> files = FileUtils.listFiles(new
File(baseClassDir), null, true);
for(File file:files){
String[] a = new String[3];
a[0] = "-d";
a[1] = baseClassDir;
a[2] = file.getAbsolutePath();
org.apache.openjpa.enhance.PCEnhancer.main(a);
}
}
I've also noticed some strange behaviour using java 7, specifically, both
IBM and Oracle JVM 7 didn't enhance the source code, but only Oracle
crashed my tomEE+ server when that happened ;-)
Just in case...
good luck
Leo
[]
Leo
On Wed, Sep 25, 2013 at 12:15 PM, Divya K Konoor
<dikon...@in.ibm.com>wrote:
Hi,
I tried by manually adding the java agent in my jvm options -javaagent:/
apache-openjpa-2.2.2/lib/openjpa-all-2.2.2.jar following examples 5.2 and
5.3 under section 2.3 at
http://openjpa.apache.org/builds/2.1.1/apache-openjpa/docs/ref_guide_pc_enhance.html#ref_guide_pc_enhance_build
.
But even that hasn't helped .I still get the entity not enhanced
problem.
Regards
Divya
From: Divya K Konoor/India/IBM
To: users-h...@openjpa.apache.org, dev-h...@openjpa.apache.org,
Date: 09/25/2013 07:19 PM
Subject: Entitiy not enhanced
Hi,
I use a container (Webshphere liberty that internally uses openjpa). I have
multiple OSGi persistence bundles .Each has its own persistence unit ; all
of these talk to the same database.The JPA entities bundled within each
persistence bundle is defined under the <class></class> tag of
the
persistence.xml. Some of these entities have relationship or dependency on
the entities bundled with another persistence bundle in which case the
dependent entities are added in the <class> tag of the former's
persistence.xml
I see the following error message when I start my liberty server:
This configuration disallows runtime optimization, but the following listed
types were not enhanced at build time or at class load time with a
javaagent: "
[err] <openjpa-2.2.1.1-SNAPSHOT-r422266:1431746 fatal user error>
org.apache.openjpa.persistence.ArgumentException: The type "class
com.xxx.ProbeConfiguration" has not been enhanced.
[err] at org.apache.openjpa.meta.ClassMetaData.resolveMeta
(ClassMetaData.java:1827)
[err] at org.apache.openjpa.meta.ClassMetaData.resolve
(ClassMetaData.java:1801)
[err] at org.apache.openjpa.meta.MetaDataRepository.processBuffer
(MetaDataRepository.java:826)
[err] at org.apache.openjpa.meta.MetaDataRepository.resolveMeta
(MetaDataRepository.java:723)
[err] at org.apache.openjpa.meta.MetaDataRepository.resolve
(MetaDataRepository.java:647)
[err] at
org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal
(MetaDataRepository.java:415)
[err] at org.apache.openjpa.meta.MetaDataRepository.getMetaData
(MetaDataRepository.java:388)
[err] at org.apache.openjpa.meta.MetaDataRepository.resolveAll
(MetaDataRepository.java:1990)
[err] at
org.apache.openjpa.meta.MetaDataRepository.getQueryMetaDataInternal
(MetaDataRepository.java:1968)
[err] at org.apache.openjpa.meta.MetaDataRepository.getQueryMetaData
(MetaDataRepository.java:1955)
[err] at
org.apache.openjpa.persistence.EntityManagerImpl.createNamedQuery
(EntityManagerImpl.java:102
There is a brief mention of this here (but it doesn't explain why):
http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.ejbfep.multiplatform.doc%2Finfo%2Fae%2Fae%2Ftejb_jpatroubleshoot.html
I was under the impression that openjpa does runtime enhancement on all JPA
entities that have not been enhanced. The above log statement seems to
indicate that one or more JPA entities have not been enhanced during
runtime.I saw a brief mention about this at
http://openjpa.apache.org/builds/2.1.1/apache-openjpa/docs/ref_guide_pc_enhance.html#ref_guide_pc_enhance_dynamic
"If a javaagent is not provided via the command line and OpenJPA is
running
on the Sun 1.6 SDK or IBM 1.6 JDK (SR8+), OpenJPA will attempt to
dynamically load the Enhancer that was mentioned in the previous section.
This support is provided as an ease of use feature and it is not
recommended for use in a production system. Using this method of
enhancement has the following caveats:
The dynamic runtime enhancer is plugged into the JVM during creation of the
EntityManagerFactory. Any Entity classes that are loaded before the
EntityManagerFactory is created will not be enhanced. "
I also noticed the following in the logs:
openjpa.DynamicEnhancementAgent: false .
I was expecting it to me openjpa.DynamicEnhancementAgent: true .
I manually added the following jvm option
-Dopenjpa.DynamicEnhancementAgent=true after which the logs show
openjpa.DynamicEnhancementAgent: true but I hit the same entitiy not
enhanced issue.
Apart from build time enhancement , is there anything that can be done to
ensure that all JPA entities are enhanced during runtime.
Thanks
Divya