Hi Pinaki, Well I am going to disable the locking and see the result if it works better and I'll feedback the result.
but using build-time enhancer. I tried ant-runner for maven but was unable to enhance my classes if I don't give any class name I get this message: 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. and if I give the class name it complains: [java] Exception in thread "main" org.apache.commons.lang.exception.NestableRuntimeException: E rror extracting class information from "com.foo.data.Account.class". [java] at org.apache.openjpa.lib.meta.ClassArgParser.parseTypeNames(ClassArgParser.java:223 ) [java] at org.apache.openjpa.lib.meta.ClassArgParser.parseTypes(ClassArgParser.java:161) [java] at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4476) [java] at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4439) [java] at org.apache.openjpa.enhance.PCEnhancer$1.run(PCEnhancer.java:4409) [java] at org.apache.openjpa.lib.conf.Configurations.launchRunnable(Configurations.java:708 ) [java] at org.apache.openjpa.lib.conf.Configurations.runAgainstAllAnchors(Configurations.ja va:698) [java] at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4404) [java] at org.apache.openjpa.enhance.PCEnhancer.main(PCEnhancer.java:4395) [java] Caused by: java.io.FileNotFoundException: com.kishware.core.gl.data.Account.class (The s ystem cannot find the file specified) [java] at java.io.FileInputStream.open(Native Method) [java] at java.io.FileInputStream.<init>(FileInputStream.java:106) [java] at org.apache.openjpa.lib.util.J2DoPrivHelper$28.run(J2DoPrivHelper.java:630) [java] at java.security.AccessController.doPrivileged(Native Method) [java] at org.apache.openjpa.lib.meta.ClassArgParser.getFromClassFile(ClassArgParser.java:3 03) [java] at org.apache.openjpa.lib.meta.ClassArgParser.parseTypeNames(ClassArgParser.java:214 ) [java] ... 8 more [java] Java Result: 1 here is the snippet I am used in pom.xml: ---- <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>process-classes</phase> <configuration> <tasks> <property name="compile_classpath" refid="maven.compile.classpath"/> <property name="runtime_classpath" refid="maven.runtime.classpath"/> <property name="test_classpath" refid="maven.test.classpath"/> <property name="plugin_classpath" refid="maven.plugin.classpath"/> <!-- echo message=">>>compile classpath: ${compile_classpath}"/> <echo message=">>>runtime classpath: ${runtime_classpath}"/> <echo message=">>>test classpath: ${test_classpath}"/> <echo message=">>>plugin classpath: ${plugin_classpath}"/--> <fileset id="enhance.path.ref" dir="."> <include name="target/test-classes/**/*.class" /> <include name="target/classes/**/*.class"/> </fileset> <property name="enhance_classpath" refid="maven.plugin.classpath"/> <echo message="Enhancing classes...." /> <java classname="org.apache.openjpa.enhance.PCEnhancer" classpath="${compile_classpath};${runtime_classpath};src/main/java;target/classes;E:/my.applications/my.eclipse.workspace/general-ledger/modules/general-ledger-da/src/main/java/resources" dir="target/classes" fork="true" > <arg value="com.foo.data.Account.class" /> <arg value="-p META-INF/persistence.xml" /> <arg value="-adc true" /> <arg value="-epr true" /> </java> <echo message="Enhancing classes done!" /> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> Pinaki Poddar wrote: > > Hi, > 1. If locking is less of a priority then performance, then use > <property name="openjpa.LockManager" value="none"/> > > By default, OpenJPA goes for optimistic lock mode. So as Kevin pointed > out, without @Version and default Optimistic lock mode -- many wasted SQL > to compare state for version checking. > > However, one should be aware of data integrity risks in such cases. > Without any locking and no version field, OpenJPA essentially will follow > a "last-write-wins" straegy. But as updates happen at per-field basis, > something like this can happen > > Transaction 1: Reads a Person P whose first name is 'John' and last name > is 'Doe' > Transaction 2: Reads the same Person > Transaction 1: Modifies first name to 'Harry' and commits > Transaction 2: Modified last name to 'Smith' and commits. > > Both commit will succeed and database will have 'Harry Smith'. > > 2. Build-time enhancement i.e. to execute one command after compilation > performs best and minimizes complexity of load-time-weaving. I have never > understood what really makes people to avoid 'build-time enhancement' - > especially when most of the apps are built, packaged and deployed via > Ant/Maven. > > > > > is_maximum wrote: >> >> Hi Kevin, >> >> Well now there are some questions here, >> first, consider the App Server dosn't enable enhancer how can I tell my >> App server to activate it? Do I have to use the same javaagent.... >> property? >> >> second, We just neglected the version field and I didn't know the OpenJPA >> will use optimistic locking anyway. Is there any way to disable this kind >> of locking? At the time we call the merge() method I can see the row in >> target table in Oracle is being locked so this means that we are using >> pessimistic locking, Am I right? >> >> One more question is that if we are using optimistic locking how to >> handle it? if a request changes an entity say Account, and at the same >> time there are say 10 requests that are modifying the same account, the >> first request will commit its changes and all other 10 requests will fail >> because their fetched entity is no longer valid. As I know using >> optimistic locking is not a good option for the entities with very >> frequent update actions. >> >> >> > > -- View this message in context: http://n2.nabble.com/-URGENT--performance-issues-tp2232295p2238071.html Sent from the OpenJPA Users mailing list archive at Nabble.com.