You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Mark Struberg (JIRA)" <ji...@apache.org> on 2015/04/17 08:16:59 UTC
[jira] [Resolved] (OPENJPA-2560) Multiple persistence unit found on
tomcat 6
[ https://issues.apache.org/jira/browse/OPENJPA-2560?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mark Struberg resolved OPENJPA-2560.
------------------------------------
Resolution: Not A Problem
Assignee: Mark Struberg
Hi Luis!
Thanks for the report! I fear this is a bug in the way SuSe deploys and sets up Tomcat. The jar should simply not appear on the classpath multiple times. There is not much we could do in our code in this case. I fear this will not only hit OpenJPA but all other kinds of libraries which call ClassLoader#getResources or do classpath scanning (OpenWebBeans, etc). Please file a bug for it in SuSe.
> Multiple persistence unit found on tomcat 6
> -------------------------------------------
>
> Key: OPENJPA-2560
> URL: https://issues.apache.org/jira/browse/OPENJPA-2560
> Project: OpenJPA
> Issue Type: Bug
> Components: jpa, kernel
> Affects Versions: 2.2.0, 2.2.1
> Environment: Suse Enterprise 11 SP3
> tomcat6-6.0.18
> Reporter: Luis Muñoz
> Assignee: Mark Struberg
>
> Persistence unit will be reported as duplicated on SuSE tomcat 6 installation due to directory structure containing symbolic links. Reported as 'Major' because it affects performance when creating entity factory.
> 503 domain-persistence WARN [http-8080-9] openjpa.MetaData - Found duplicate metadata or mapping for "class com.mydomain.testpkg.persistence.entity.entity1". Ignoring.
> 1503 domain-persistence WARN [http-8080-9] openjpa.MetaData - Found duplicate metadata or mapping for "class com.mydomain.testpkg.persistence.entity.entity2". Ignoring.
> ... < more similar messages>
> 1503 domain-persistence WARN [http-8080-9] openjpa.MetaData - Found duplicate metadata or mapping for "class com.mydomain.testpkg.persistence.entity.entitynn". Ignoring.
> 3769 domain-persistence INFO [http-8080-9] openjpa.Runtime - A down level Entity was detected and logged. Please enable RUNTIME trace to see all down level Entities.
> 3695 domain-persistence WARN [http-8080-3] openjpa.Runtime - The persistence unit "testpkg-persistence-pu" was found multiple times in the following resources "[jar:file:/srv/tomcat6/webapps/testpkg-domain-wsvc/WEB-INF/lib/testpkg-persistence-ext.jar!/META-INF/persistence.xml, jar:file:/usr/share/tomcat6/webapps/testpkg-domain-wsvc/WEB-INF/lib/testpkg-persistence-ext.jar!/META-INF/persistence.xml]", but persistence unit names should be unique. The first persistence unit matching the provided name in "jar:file:/srv/tomcat6/webapps/testpkg-domain-wsvc/WEB-INF/lib/testpkg-persistence-ext.jar!/META-INF/persistence.xml" is being used.
> 4103 domain-persistence INFO [http-8080-9] openjpa.Runtime - OpenJPA dynamically loaded a validation provider.
> 4128 domain-persistence INFO [http-8080-21] openjpa.Runtime - Starting OpenJPA 2.2.1
> There's only one physical jar file at /srv/tomcat6/webapps/testpkg-domain-wsvc/WEB-INF/lib/testpkg-persistence-ext.jar but openjpa search mechanism will think there are two different jars.
> jar:file:/srv/tomcat6/webapps/testpkg-domain-wsvc/WEB-INF/lib/testpkg-persistence-ext.jar!/META-INF/persistence.xml
> jar:file:/usr/share/tomcat6/webapps/testpkg-domain-wsvc/WEB-INF/lib/testpkg-persistence-ext.jar!/META-INF/persistence.xml
> On the directory structure it can be seen /usr/share/tomcat6/webapps points to /srv/tomcat6/webapps
> ls -l /usr/share/tomcat6
> total 4
> drwxr-xr-x 2 root root 4096 Jan 30 2014 bin
> lrwxrwxrwx 1 root root 12 Jan 30 2014 conf -> /etc/tomcat6
> lrwxrwxrwx 1 root root 15 Jan 30 2014 lib -> ../java/tomcat6
> lrwxrwxrwx 1 root root 16 Jan 30 2014 logs -> /var/log/tomcat6
> lrwxrwxrwx 1 root root 23 Jan 30 2014 temp -> /var/cache/tomcat6/temp
> lrwxrwxrwx 1 root root 20 Jan 30 2014 webapps -> /srv/tomcat6/webapps
> lrwxrwxrwx 1 root root 18 Jan 30 2014 work -> /var/cache/tomcat6
> There's a partial workaround to overcome most of the 'Found duplicate metadata or mapping' messages. The appBase attribute of <Host> can be changed at /etc/tomcat6/server.xml to point to an absolute path instead of a path relative to CATALINA_BASE or CATALINA_HOME
> <Host name="localhost" appBase="/srv/tomcat6/webapps"
> unpackWARs="true" autoDeploy="true"
> xmlValidation="false" xmlNamespaceAware="false">
> The "multiple times" error will persist even if only one jar is mentioned after the workaround was applied:
> 1255 testpkg-persistence-pu WARN [http-8080-1] openjpa.MetaData - Found duplicate metadata or mapping for "class com.mydomain.testpkg.persistence.entity.entity1". Ignoring.
> 3571 testpkg-persistence-pu INFO [http-8080-1] openjpa.Runtime - A down level Entity was detected and logged. Please enable RUNTIME trace to see all down level Entities.
> 3580 testpkg-persistence-pu WARN [http-8080-1] openjpa.Runtime - The persistence unit "testpkg-persistence-pu" was found multiple times in the following resources "[jar:file:/srv/tomcat6/webapps/testpkg-domain-wsvc/WEB-INF/lib/medx-persistence-ext.jar!/META-INF/persistence.xml]", but persistence unit names should be unique. The first persistence unit matching the provided name in "jar:file:/srv/tomcat6/webapps/testpkg-domain-wsvc/WEB-INF/lib/testpkg-persist
> ence-ext.jar!/META-INF/persistence.xml" is being used.
> 3671 testpkg-persistence-pu INFO [http-8080-1] openjpa.Runtime - OpenJPA dynamically loaded a validation provider.
> 3925 testpkg-persistence-pu INFO [http-8080-1] openjpa.Runtime - Starting OpenJPA 2.2.1
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)