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)