openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kevin Sutter <kwsut...@gmail.com>
Subject Re: 'Standalone' Sequence Generator
Date Thu, 12 Feb 2009 14:00:24 GMT
Hi,
Some comments below, but I don't have a complete answer to your enhancement
questions yet...

On Thu, Feb 12, 2009 at 6:38 AM, is_maximum <mnrz57@gmail.com> wrote:

>
> Hi
>
> We were able to improve the performance a bit but still far way to go. Some
> changes in code and creating index in database help us more.
>
> But still we have problem in batch limit. At first, I had set it to -1 that
> ends up in a weird OptimisticLockException in all persist methods and then
> I
> set it to a value of 20 then that exception gone but after a while I
> figured
> out in some business methods we still catch the optimistic lock exception
> and eventually I decided to set it to 0 just like it was already.
>
> My question is why this value has various effect on various methods? It
> seems it has something to do with the number of insert/update statement but
> can't understand why.


The batch limit setting can affect various areas of the code path.  Setting
the batch limit to 0 will turn it off, so that's the "safest".  This 0
setting will send each individual SQL statement to the database via the JDBC
invocation.  Any positive number setting will allow OpenJPA to batch up a
set of statements before sending them across the wire for processing.  This
batching support can help with overall performance depending on your
application's design.  Less trips to the database is goodness.  Where this
gets tricky is when the statements that are being batched need to be
re-ordered for optimal efficiencies.  OpenJPA has a couple of different
"order managers" that provide policies on how to re-order the statements.
Depending on the re-ordering mechanism, any errors detected could come from
less-than-obvious processing.  Finally, the -1 setting says that there is no
limit to the number of statements batched.  If you have a long running loop
construct, you could easily blow your memory usage if you leave this set to
-1.  Hope that helps to explain why this value has various effects on your
processing.


>
>
> Second problem is build-time entity enhancement. the problem is that the
> ant
> code (running from maven) in my computer works fine and will enhance all
> the
> entities but in other computer with the same maven version doesn't work and
> the exception is as follow:
>

I hate to state the obvious, but there must be something different between
the two environments.  You mention you are using the same version of maven,
that's good.  Same version of OpenJPA also?  Exact same OpenJPA jar file?
And, per the suggestions in the error message...  Same persistence entities
format and content (jar file, directory structure, etc)?  Same classpath
settings?  Same security settings?  This latter item probably doesn't apply
to your environment, but it's worth asking.

Whenever I hit a situation like this, I can eventually trace this back to my
own environment.  I've hit this exact same error in the past, especially
when running within Eclipse.  And, every time, I can trace it back to
something different with this particular project or configuration that was
just slightly different from the "working" environment.


> -------------------------------
> enhance.all.entities:
>     [echo] running enhancer
> <openjpa-1.2.0-r422266:683325 fatal user error>
> org.apache.openjpa.util.MetaData
> Exception: MetaDataFactory could not be configured
> (conf.newMetaDataFactoryInsta
> nce() returned null). This might mean that no configuration properties were
> foun
> d. 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 O
> penJPA distribution jars are corrupt, or if your security policy is overly
> stric
> t.
>        at
> org.apache.openjpa.meta.MetaDataRepository.initializeMetaDataFactory(
> MetaDataRepository.java:1567)
>        at
> org.apache.openjpa.meta.MetaDataRepository.endConfiguration(MetaDataR
> epository.java:1558)
>        at
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configur
> ations.java:505)
>        at
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configur
> ations.java:430)
>        at
> org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:
> 103)
>        at
> org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataR
> epositoryValue.java:68)
>        at
> org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:
> 83)
>        at
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositor
> yInstance(OpenJPAConfigurationImpl.java:863)
>        at
> org.apache.openjpa.ant.PCEnhancerTask.executeOn(PCEnhancerTask.java:8
> 8)
>        at
> org.apache.openjpa.lib.ant.AbstractTask.execute(AbstractTask.java:172
> )
>        at
> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
>        at org.apache.tools.ant.Task.perform(Task.java:364)
>        at org.apache.tools.ant.Target.execute(Target.java:341)
>        at org.apache.tools.ant.Target.performTasks(Target.java:369)
>        at
> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
>        at
> org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(Single
> CheckExecutor.java:37)
>        at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
>        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
>        at
> org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:107)
>
>        at
> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
>        at org.apache.tools.ant.Task.perform(Task.java:364)
>        at org.apache.tools.ant.Target.execute(Target.java:341)
>        at org.apache.tools.ant.Target.performTasks(Target.java:369)
>        at
> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
>        at
> org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(Single
> CheckExecutor.java:37)
>        at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
>        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
>        at
> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
>        at org.apache.tools.ant.Task.perform(Task.java:364)
>        at org.apache.tools.ant.Target.execute(Target.java:341)
>        at
> org.apache.maven.plugin.antrun.AbstractAntMojo.executeTasks(AbstractA
> ntMojo.java:108)
>        at
> org.apache.maven.plugin.antrun.AntRunMojo.execute(AntRunMojo.java:83)
>
>        at
> org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
> nManager.java:451)
>        at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
> ultLifecycleExecutor.java:558)
>        at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi
> fecycle(DefaultLifecycleExecutor.java:499)
>        at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
> ltLifecycleExecutor.java:478)
>        at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
> dleFailures(DefaultLifecycleExecutor.java:330)
>        at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
> ts(DefaultLifecycleExecutor.java:291)
>        at
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
> fecycleExecutor.java:142)
>        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336)
>        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129)
>        at org.apache.maven.cli.MavenCli.main(MavenCli.java:287)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
>        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
>        at
> org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
>
>        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
> [INFO]
> ------------------------------------------------------------------------
> [ERROR] BUILD ERROR
> [INFO]
> ------------------------------------------------------------------------
> [INFO] Error executing ant tasks
>
> Embedded error: The following error occurred while executing this line:
>
> F:\java-projects\GL\modules\general-ledger-api\src\main\ant\enhancer.xml:46:
> The
>  following error occurred while executing this line:
>
> F:\java-projects\GL\modules\general-ledger-api\src\main\ant\enhancer.xml:80:
> <op
> enjpa-1.2.0-r422266:683325 fatal user error>
> org.apache.openjpa.util.MetaDataExc
> eption: 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 yo
> ur classpath, or that the properties file you are using for configuration
> is
> ava
> ilable. If you are using Ant, please see the <properties> or
> <propertiesFile> at
> tributes of the task's nested <config> element. This can also occur if your
> Open
> JPA distribution jars are corrupt, or if your security policy is overly
> strict.
> --------------------------
>
> I googled but found nothing useful for this error. Can you help me what is
> this error?
>
> Thank you all
>
> --
> View this message in context:
> http://n2.nabble.com/-URGENT--performance-issues-tp2232295p2314598.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com.
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message