[ 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)