Hi, It looks like the enhancer can't find persistence.xml - it's expected to be in a META-INF/ directory somewhere on your classpath. Have you tried adding it to the classpath explicitly? The later errors look like we can't load a given class file (presumably one that the entity depends on), have you tried running with a persistence.xml and a jar with all your entities on the classpath?
-mike On Sat, Nov 22, 2008 at 11:58 PM, ruslan <[EMAIL PROTECTED]> wrote: > > Sorry guys, it's me again. I'm still converting my Hibernate project to > OpenJPA so I will continue to entertain everybody in this mailing list. > > Could you please help me with commandline PCEnhancer ? I have a problem > with > one entity in my project. Everything is running under Tomcat. So my entity > has bunch of primitive fields and one OneToMany relation. The problem is > that after I change value of one primitive field, call of > EntityManager.merge() causes UPDATE queries for ALL object from One-To-Many > relation. It's kinda expensive and seems strange to me because I expected > that proxy object will see what I changed and what I didn't. > > I thought maybe I should use PCEnhancer to fix it (or if somebody tells me > how to pass -javaagent to Tomcat JVM I'bb be happy), unless it's bug. > > So far I haven't had a luck with PCEnhancer. I think I tried billion of > combinations but none of them worked. Here are 2 examples how I run it. I > tried this > > > @java -classpath "C:\Program Files\apache-ant\lib\ant.jar;C:\Program > Files\Apache\Tomcat > > 6.0\lib\javaee.jar;C:\WORK\apache-openjpa-1.3.0-SNAPSHOT\lib\commons-lang-2.1.jar;C:\WORK\apache-openjpa-1.3.0-SNAPSHOT\lib\serp-1.13.1.jar;C:\WORK\apache-openjpa-1.3.0-SNAPSHOT\openjpa-1.3.0-SNAPSHOT.jar" > org.apache.openjpa.enhance.PCEnhancer > C:\WORK\zefall\api2\src\zef\entities\UsersEntity.java > > It throws exception > > Exception in thread "main" <openjpa-1.3.0-SNAPSHOT-r422266:707655 fatal > user > error> org.apache.openjpa.util.MetaDataException: MetaDataFactory could not > be configured (conf.newMetaDataFactoryInstance() returned null). This might > mean that no configuration properties were found. Ensure that you have a > META-INF/persistence.xml file, that it is available in your classpath, or > that the properties file you are using for configuration is available. If > you are using Ant, please see the <properties> or <propertiesFile> > attributes of the task's nested <config> element. This can also occur if > your OpenJPA distribution jars are corrupt, or if your security policy is > overly strict. > at > > org.apache.openjpa.meta.MetaDataRepository.initializeMetaDataFactory(MetaDataRepository.java:1582) > at > > org.apache.openjpa.meta.MetaDataRepository.endConfiguration(MetaDataRepository.java:1573) > at > > org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:505) > at > > org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:430) > at > org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:103) > at > > org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68) > at > org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83) > at > > org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:866) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4458) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4440) > at org.apache.openjpa.enhance.PCEnhancer$1.run(PCEnhancer.java:4410) > at > > org.apache.openjpa.lib.conf.Configurations.launchRunnable(Configurations.java:708) > at > > org.apache.openjpa.lib.conf.Configurations.runAgainstAllAnchors(Configurations.java:693) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4405) > at org.apache.openjpa.enhance.PCEnhancer.main(PCEnhancer.java:4396) > > > I also tried this: > > 47 mysql INFO [main] openjpa.Tool - No targets were given. Running on > all classes in your persistent classes list, or all metadata files in > classpath directories if you have not listed your persistent classes. Use > -help to display tool usage information. > Exception in thread "main" java.lang.IllegalArgumentException: > java.lang.ClassNotFoundException: zef.entities.SurveyGroupsEntity > at serp.util.Strings.toClass(Strings.java:164) > at serp.util.Strings.toClass(Strings.java:108) > at serp.bytecode.BCClass.getType(BCClass.java:566) > at org.apache.openjpa.enhance.PCEnhancer.<init>(PCEnhancer.java:249) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4493) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4440) > at org.apache.openjpa.enhance.PCEnhancer$1.run(PCEnhancer.java:4410) > at > > org.apache.openjpa.lib.conf.Configurations.launchRunnable(Configurations.java:708) > at > > org.apache.openjpa.lib.conf.Configurations.runAgainstAllAnchors(Configurations.java:698) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4405) > at org.apache.openjpa.enhance.PCEnhancer.main(PCEnhancer.java:4396) > > It fails with message: > > 47 mysql INFO [main] openjpa.Tool - No targets were given. Running on > all classes in your persistent classes list, or all metadata files in > classpath directories if you have not listed your persistent classes. Use > -help to display tool usage information. > Exception in thread "main" java.lang.IllegalArgumentException: > java.lang.ClassNotFoundException: zef.entities.SurveyGroupsEntity > at serp.util.Strings.toClass(Strings.java:164) > at serp.util.Strings.toClass(Strings.java:108) > at serp.bytecode.BCClass.getType(BCClass.java:566) > at org.apache.openjpa.enhance.PCEnhancer.<init>(PCEnhancer.java:249) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4493) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4440) > at org.apache.openjpa.enhance.PCEnhancer$1.run(PCEnhancer.java:4410) > at > > org.apache.openjpa.lib.conf.Configurations.launchRunnable(Configurations.java:708) > at > > org.apache.openjpa.lib.conf.Configurations.runAgainstAllAnchors(Configurations.java:698) > at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4405) > at org.apache.openjpa.enhance.PCEnhancer.main(PCEnhancer.java:4396) > > What should I do ? > > Thanks!! > -- > View this message in context: > http://n2.nabble.com/How-do-I-use-commandline-PCEnhancer-%28OpenJPA-1.3%29---tp1567621p1567621.html > Sent from the OpenJPA Users mailing list archive at Nabble.com. > >
