You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Wooster (JIRA)" <ji...@apache.org> on 2018/12/10 22:31:00 UTC
[jira] [Comment Edited] (TOMEE-2353) @PersistenceUnit unitName has
multiple matches
[ https://issues.apache.org/jira/browse/TOMEE-2353?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16715669#comment-16715669 ]
Wooster edited comment on TOMEE-2353 at 12/10/18 10:30 PM:
-----------------------------------------------------------
And if I try running with `-as-war` I get:
{noformat}
java -Dopenejb.validation.output.level=VERBOSE -jar target/CRMService-2.0.war -tomeexml config/tomee-local.xml -as-war
INFO - Starting TomEE from: /Users/cyber/dev/myapp/MyApp-CRMService/./apache-tomee
INFO - Initializing ProtocolHandler ["http-nio-8080"]
INFO - Using a shared selector for servlet write/read
INFO - Starting service [Tomcat]
INFO - Starting Servlet Engine: Apache Tomcat/9.0.12
INFO - Starting ProtocolHandler ["http-nio-8080"]
INFO - Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc.TomEEDataSourceCreator'
INFO - ********************************************************************************
INFO - OpenEJB http://tomee.apache.org/
INFO - Startup: Mon Dec 10 22:22:03 WET 2018
INFO - Copyright 1999-2018 (C) Apache OpenEJB Project, All Rights Reserved.
INFO - Version: 8.0.0-M1
INFO - Build date: 20181014
INFO - Build time: 12:39
INFO - ********************************************************************************
INFO - openejb.home = /Users/cyber/dev/myapp/MyApp-CRMService/apache-tomee
INFO - openejb.base = /Users/cyber/dev/myapp/MyApp-CRMService/apache-tomee
INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@3c87521
INFO - Succeeded in installing singleton service
INFO - TomEE configuration file is '/Users/cyber/dev/myapp/MyApp-CRMService/config/tomee-local.xml'
INFO - Configuring Service(id=Tomcat Security Service, type=SecurityService, provider-id=Tomcat Security Service)
INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFO - Configuring Service(id=jdbc/crmservice, type=Resource, provider-id=Default JDBC Database)
INFO - Using 'openejb.system.apps=false'
INFO - Using 'openejb.deployments.classpath=false'
INFO - Creating TransactionManager(id=Default Transaction Manager)
INFO - Creating SecurityService(id=Tomcat Security Service)
INFO - Creating Resource(id=jdbc/crmservice)
INFO - Using 'openejb.servicemanager.enabled=false'
INFO - Using 'openejb.deployments.classpath.filter.systemapps=false'
INFO - Configuring enterprise application:
INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
INFO - Auto-creating a container for bean .Comp308592104: Container(type=MANAGED, id=Default Managed Container)
INFO - Creating Container(id=Default Managed Container)
INFO - Using directory /var/folders/n8/rmzyc9yx2zvbc978_p6y_by40000gn/T for stateful session passivation
INFO - Using 'openejb.validation.output.level=VERBOSE'
INFO - Enterprise application "" loaded.
INFO - Assembling app:
INFO - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@3c87521
INFO - OpenWebBeans Container is starting...
INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
SEVERE - CDI Beans module deployment failed
org.apache.webbeans.exception.WebBeansConfigurationException: Error while sending SystemEvent to a CDI Extension! org.apache.webbeans.portable.events.generics.GProcessAnnotatedType@4e957e22
at org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:771)
at org.apache.webbeans.container.BeanManagerImpl.fireEvent(BeanManagerImpl.java:495)
at org.apache.webbeans.container.BeanManagerImpl.fireEvent(BeanManagerImpl.java:469)
at org.apache.webbeans.util.WebBeansUtil.fireProcessAnnotatedTypeEvent(WebBeansUtil.java:736)
at org.apache.webbeans.config.BeansDeployer.annotatedTypesFromBdaClassPath(BeansDeployer.java:1361)
at org.apache.webbeans.config.BeansDeployer.annotatedTypesFromClassPath(BeansDeployer.java:1284)
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:257)
at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:227)
at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:967)
at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:761)
at org.apache.tomee.embedded.Container.deploy(Container.java:350)
at org.apache.tomee.embedded.Container.deployPathsAsWebapp(Container.java:230)
at org.apache.tomee.embedded.Container.deployClasspathAsWebApp(Container.java:195)
at org.apache.tomee.embedded.Container.deployClasspathAsWebApp(Container.java:171)
at org.apache.tomee.embedded.Main.deployClasspath(Main.java:226)
at org.apache.tomee.embedded.Main.main(Main.java:161)
Caused by: org.apache.webbeans.exception.WebBeansException: java.lang.StackOverflowError
at org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:371)
at org.apache.webbeans.event.NotificationManager.invokeObserverMethod(NotificationManager.java:854)
at org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:750)
... 17 more
Caused by: java.lang.StackOverflowError
at java.util.HashMap.hash(HashMap.java:339)
at java.util.HashMap.put(HashMap.java:612)
at org.apache.bval.util.reflection.TypeUtils.getTypeArguments(TypeUtils.java:863)
at org.apache.bval.util.reflection.TypeUtils.getTypeArguments(TypeUtils.java:790)
at org.apache.bval.util.reflection.TypeUtils.getTypeArguments(TypeUtils.java:914)
at org.apache.bval.util.reflection.TypeUtils.getTypeArguments(TypeUtils.java:786)
at org.apache.bval.util.reflection.TypeUtils.getTypeArguments(TypeUtils.java:772)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1140)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157){noformat}
pom.xml:
{code:java}
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!--<mainClass>no.myapp.ec.servers.HerokuRunner</mainClass>-->
<mainClass>org.apache.tomee.embedded.Main</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/cxf/bus-extensions.txt</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/openwebbeans/openwebbeans.properties</resource>
</transformer>
</transformers>
<filters>
<filter> <!-- we don't want JSF to be activated -->
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/faces-config.xml</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>LICENSE</exclude>
<exclude>LICENSE/*</exclude>
<exclude>persistence.xml</exclude>
<exclude>classes/META-INF/persistence.xml</exclude>
<!--<exclude>WEB-INF/classes/META-INF/persistence.xml</exclude>-->
<exclude>META-INF/persistence.xml</exclude>
<!--<exclude>WEB-INF/persistence.xml</exclude>-->
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>{code}
was (Author: wooster):
And if I try running with `-as-war` I get:
{noformat}
java -Dopenejb.validation.output.level=VERBOSE -jar target/CRMService-2.0.war -tomeexml config/tomee-local.xml -as-war
INFO - Starting TomEE from: /Users/cyber/dev/myapp/MyApp-CRMService/./apache-tomee
INFO - Initializing ProtocolHandler ["http-nio-8080"]
INFO - Using a shared selector for servlet write/read
INFO - Starting service [Tomcat]
INFO - Starting Servlet Engine: Apache Tomcat/9.0.12
INFO - Starting ProtocolHandler ["http-nio-8080"]
INFO - Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc.TomEEDataSourceCreator'
INFO - ********************************************************************************
INFO - OpenEJB http://tomee.apache.org/
INFO - Startup: Mon Dec 10 22:22:03 WET 2018
INFO - Copyright 1999-2018 (C) Apache OpenEJB Project, All Rights Reserved.
INFO - Version: 8.0.0-M1
INFO - Build date: 20181014
INFO - Build time: 12:39
INFO - ********************************************************************************
INFO - openejb.home = /Users/cyber/dev/myapp/MyApp-CRMService/apache-tomee
INFO - openejb.base = /Users/cyber/dev/myapp/MyApp-CRMService/apache-tomee
INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@3c87521
INFO - Succeeded in installing singleton service
INFO - TomEE configuration file is '/Users/cyber/dev/myapp/MyApp-CRMService/config/tomee-local.xml'
INFO - Configuring Service(id=Tomcat Security Service, type=SecurityService, provider-id=Tomcat Security Service)
INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFO - Configuring Service(id=jdbc/crmservice, type=Resource, provider-id=Default JDBC Database)
INFO - Using 'openejb.system.apps=false'
INFO - Using 'openejb.deployments.classpath=false'
INFO - Creating TransactionManager(id=Default Transaction Manager)
INFO - Creating SecurityService(id=Tomcat Security Service)
INFO - Creating Resource(id=jdbc/crmservice)
INFO - Using 'openejb.servicemanager.enabled=false'
INFO - Using 'openejb.deployments.classpath.filter.systemapps=false'
INFO - Configuring enterprise application:
INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
INFO - Auto-creating a container for bean .Comp308592104: Container(type=MANAGED, id=Default Managed Container)
INFO - Creating Container(id=Default Managed Container)
INFO - Using directory /var/folders/n8/rmzyc9yx2zvbc978_p6y_by40000gn/T for stateful session passivation
INFO - Using 'openejb.validation.output.level=VERBOSE'
INFO - Enterprise application "" loaded.
INFO - Assembling app:
INFO - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@3c87521
INFO - OpenWebBeans Container is starting...
INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
SEVERE - CDI Beans module deployment failed
org.apache.webbeans.exception.WebBeansConfigurationException: Error while sending SystemEvent to a CDI Extension! org.apache.webbeans.portable.events.generics.GProcessAnnotatedType@4e957e22
at org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:771)
at org.apache.webbeans.container.BeanManagerImpl.fireEvent(BeanManagerImpl.java:495)
at org.apache.webbeans.container.BeanManagerImpl.fireEvent(BeanManagerImpl.java:469)
at org.apache.webbeans.util.WebBeansUtil.fireProcessAnnotatedTypeEvent(WebBeansUtil.java:736)
at org.apache.webbeans.config.BeansDeployer.annotatedTypesFromBdaClassPath(BeansDeployer.java:1361)
at org.apache.webbeans.config.BeansDeployer.annotatedTypesFromClassPath(BeansDeployer.java:1284)
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:257)
at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:227)
at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:967)
at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:761)
at org.apache.tomee.embedded.Container.deploy(Container.java:350)
at org.apache.tomee.embedded.Container.deployPathsAsWebapp(Container.java:230)
at org.apache.tomee.embedded.Container.deployClasspathAsWebApp(Container.java:195)
at org.apache.tomee.embedded.Container.deployClasspathAsWebApp(Container.java:171)
at org.apache.tomee.embedded.Main.deployClasspath(Main.java:226)
at org.apache.tomee.embedded.Main.main(Main.java:161)
Caused by: org.apache.webbeans.exception.WebBeansException: java.lang.StackOverflowError
at org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:371)
at org.apache.webbeans.event.NotificationManager.invokeObserverMethod(NotificationManager.java:854)
at org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:750)
... 17 more
Caused by: java.lang.StackOverflowError
at java.util.HashMap.hash(HashMap.java:339)
at java.util.HashMap.put(HashMap.java:612)
at org.apache.bval.util.reflection.TypeUtils.getTypeArguments(TypeUtils.java:863)
at org.apache.bval.util.reflection.TypeUtils.getTypeArguments(TypeUtils.java:790)
at org.apache.bval.util.reflection.TypeUtils.getTypeArguments(TypeUtils.java:914)
at org.apache.bval.util.reflection.TypeUtils.getTypeArguments(TypeUtils.java:786)
at org.apache.bval.util.reflection.TypeUtils.getTypeArguments(TypeUtils.java:772)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1140)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157)
at org.apache.bval.util.reflection.TypeUtils.getRawType(TypeUtils.java:1157){noformat}
pom.xml:
{code:java}
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!--<mainClass>no.myapp.ec.servers.HerokuRunner</mainClass>-->
<mainClass>org.apache.tomee.embedded.FatApp</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/cxf/bus-extensions.txt</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/openwebbeans/openwebbeans.properties</resource>
</transformer>
</transformers>
<filters>
<filter> <!-- we don't want JSF to be activated -->
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/faces-config.xml</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>LICENSE</exclude>
<exclude>LICENSE/*</exclude>
<exclude>persistence.xml</exclude>
<exclude>classes/META-INF/persistence.xml</exclude>
<!--<exclude>WEB-INF/classes/META-INF/persistence.xml</exclude>-->
<exclude>META-INF/persistence.xml</exclude>
<!--<exclude>WEB-INF/persistence.xml</exclude>-->
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>{code}
> @PersistenceUnit unitName has multiple matches
> ----------------------------------------------
>
> Key: TOMEE-2353
> URL: https://issues.apache.org/jira/browse/TOMEE-2353
> Project: TomEE
> Issue Type: Bug
> Components: TomEE Core Server
> Reporter: Wooster
> Priority: Major
>
> On 8.0.0-M1
> I am trying to deploy a shaded WAR as described in [https://www.tomitribe.com/blog/50-shades-of-tomee/]
> I have a simple persistence.xml
>
> {code:java}
> <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="CRMServicePU" transaction-type="JTA"> <jta-data-source>jdbc/crmservice</jta-data-source> <non-jta-data-source>jdbc/nonJTAcrmService</non-jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <shared-cache-mode>ALL</shared-cache-mode> </persistence-unit> </persistence>
> {code}
>
>
> And a tomee.xml config file that connects up jdbc/crmservice to postgresql. Persistence.xml lives in webapp/WEB-INF
> I have ensured exactly one copy of persistence.xml is present in the build, yet it keeps creating multiple copies of the PU:
> {code:java}
> INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
> INFO - Auto-creating a container for bean AutoTaskStats: Container(type=SINGLETON, id=Default Singleton Container)
> INFO - Creating Container(id=Default Singleton Container)
> INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
> INFO - Auto-creating a container for bean ContractBean: Container(type=STATELESS, id=Default Stateless Container)
> INFO - Creating Container(id=Default Stateless Container)
> INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
> INFO - Auto-creating a container for bean CRMService-2.0.Comp954997812: Container(type=MANAGED, id=Default Managed Container)
> INFO - Creating Container(id=Default Managed Container)
> INFO - Using directory /var/folders/n8/rmzyc9yx2zvbc978_p6y_by40000gn/T for stateful session passivation
> INFO - Configuring PersistenceUnit(name=CRMServicePU)
> INFO - Auto-creating a Resource with id 'jdbc/crmserviceNonJtaNonJta' of type 'DataSource for 'CRMServicePU'.
> INFO - Configuring Service(id=jdbc/crmserviceNonJtaNonJta, type=Resource, provider-id=jdbc/crmserviceNonJta)
> INFO - Creating Resource(id=jdbc/crmserviceNonJtaNonJta)
> INFO - Adjusting PersistenceUnit CRMServicePU <jta-data-source> to Resource ID 'jdbc/crmserviceNonJta' from 'jdbc/crmservice'
> INFO - Adjusting PersistenceUnit CRMServicePU <non-jta-data-source> to Resource ID 'jdbc/crmserviceNonJtaNonJta' from 'jdbc/nonJTAcrmService'
> INFO - Configuring PersistenceUnit(name=CRMServicePU)
> INFO - Adjusting PersistenceUnit CRMServicePU <jta-data-source> to Resource ID 'jdbc/crmserviceNonJta' from 'jdbc/crmservice'
> INFO - Adjusting PersistenceUnit CRMServicePU <non-jta-data-source> to Resource ID 'jdbc/crmserviceNonJtaNonJta' from 'null'
> INFO - Configuring PersistenceUnit(name=CRMServicePU)
> INFO - Adjusting PersistenceUnit CRMServicePU <jta-data-source> to Resource ID 'jdbc/crmserviceNonJta' from 'jdbc/crmservice'
> INFO - Adjusting PersistenceUnit CRMServicePU <non-jta-data-source> to Resource ID 'jdbc/crmserviceNonJtaNonJta' from 'null'
> SEVERE - FAIL ... CRMService-2.0: @PersistenceUnit unitName has multiple matches: unitName "CRMServicePU" has 3 possible matches.
> SEVERE - FAIL ... CRMService-2.0: @PersistenceUnit unitName has multiple matches: unitName "CRMServicePU" has 3 possible matches.
> SEVERE - FAIL ... CRMService-2.0: @PersistenceUnit unitName has multiple matches: unitName "CRMServicePU" has 3 possible matches.
> SEVERE - FAIL ... CRMService-2.0: @PersistenceUnit unitName has multiple matches: unitName "CRMServicePU" has 3 possible matches.
> SEVERE - FAIL ... CRMService-2.0: @PersistenceUnit unitName has multiple matches: unitName "CRMServicePU" has 3 possible matches.
> SEVERE - FAIL ... CRMService-2.0: @PersistenceUnit unitName has multiple matches: unitName "CRMServicePU" has 3 possible matches.
> SEVERE - FAIL ... CRMService-2.0: @PersistenceUnit unitName has multiple matches: unitName "CRMServicePU" has 3 possible matches.
> SEVERE - FAIL ... CRMService-2.0: @PersistenceUnit unitName has multiple matches: unitName "CRMServicePU" has 3 possible matches.
> SEVERE - FAIL ... CRMService-2.0: @PersistenceUnit unitName has multiple matches: unitName "CRMServicePU" has 3 possible matches.
> SEVERE - FAIL ... CRMService-2.0: @PersistenceUnit unitName has multiple matches: unitName "CRMServicePU" has 3 possible matches.{code}
> I am quite sure there is only one persistence.xml file in the built shaded war. When I execute it, the file can be found at
> `./target/CRMService-2.0/WEB-INF/persistence.xml`
> What am I doing wrong?
>
>
> With VERBOSE:
>
> {code:java}
> SEVERE - FAIL ... CRMService-2.0: The reference @PersistenceUnit(name="emf", unitName="CRMServicePU") cannot be resolved as there are 3 units with the same name. Update your unitName to one of the following:../CRMServicePU%20-1416073382localhost
> ../CRMServicePU%20-164941935localhost
> ../CRMServicePU%2028475843localhost
> {code}
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)