Search code examples
persistenceeclipselinkpayarapersistence.xml

Stackoverflow at predeployment of PersistenceUnit Jakarta EE10


The migration of a Webapplication from Java EE8 to Jakarta EE10 based on Payara Fish 6.2023.6 failed during deployment.

WARNUNG:   Unsupported deployment descriptors element schemalocation value https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd.
SCHWERWIEGEND:   Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
SCHWERWIEGEND:   Exception while preparing the app
SCHWERWIEGEND:   Exception during lifecycle processing
jakarta.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 4.0.1.payara-p1.v202304041433): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [com.eisenbahntechnik.tosPU] failed.
Internal Exception: java.lang.StackOverflowError
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createPredeployFailedPersistenceException(EntityManagerSetupImpl.java:2150)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:2126)
    at org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFactoryImpl(PersistenceProvider.java:347)
    at org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFactory(PersistenceProvider.java:313)
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:207)
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:114)
    at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:267)
    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:571)
    at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:286)
    at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:183)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:1197)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepare(ApplicationLifecycle.java:511)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:613)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:556)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:552)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/javax.security.auth.Subject.doAs(Subject.java:376)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:551)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:582)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:574)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/javax.security.auth.Subject.doAs(Subject.java:376)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:573)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1497)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1879)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1755)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:604)
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:256)
    at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:150)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:174)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:153)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:196)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:510)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:82)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: Exception [EclipseLink-28018] (Eclipse Persistence Services - 4.0.1.payara-p1.v202304041433): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [com.eisenbahntechnik.tosPU] failed.
Internal Exception: java.lang.StackOverflowError
    at org.eclipse.persistence.exceptions.EntityManagerSetupException.predeployFailed(EntityManagerSetupException.java:233)
    ... 47 more
Caused by: java.lang.StackOverflowError
    at org.eclipse.persistence.asm.internal.platform.eclipselink.MethodVisitorImpl$ELMethodVisitor.visitAttribute(MethodVisitorImpl.java:275)
    at org.eclipse.persistence.asm.internal.platform.eclipselink.MethodVisitorImpl.visitAttribute(MethodVisitorImpl.java:508)
    at org.eclipse.persistence.asm.EclipseLinkMethodVisitor.visitAttribute(EclipseLinkMethodVisitor.java:216)

... last 3 exception some 100 times more
org.eclipse.persistence.asm.internal.platform.eclipselink.MethodVisitorImpl$ELMethodVisitor.visitAttribute(MethodVisitorImpl.java:275)
    at org.eclipse.persistence.asm.internal.platform.eclipselink.MethodVisitorImpl.visitAttribute(MethodVisitorImpl.java:508)
    at org.eclipse.persistence.asm.EclipseLinkMethodVisitor.visitAttribute(EclipseLinkMethodVisitor.java:216)
    at org.eclipse.persistence.asm.internal.platform.eclipselink.MethodVisitorImpl$ELMethodVisitor.visitAttribute(MethodVisitorImpl.java:275)

The 3 exception lines above arise more than 100 times.

The persistence.xml file looks like this:

<persistence version="3.0" xmlns="https://jakarta.ee/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd">
  <persistence-unit name="com.eisenbahntechnik.tosPU" transaction-type="JTA">
    <jta-data-source>jdbc/tos</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
  </persistence-unit>
</persistence>

I changed only the namespace of the ressources to jakarta.*, nothing else.

What could be the reason for that?


Solution

  • After downgrading from Payara 6.2023.6 to 6.2023.3 it works. EclipseLink v4.0.1 was upgraded in 6.2023.4. Waiting for new Payara release with fixed error in v4.0.2 like proposal from Chris.