Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 349906

Summary: NPE while using eclipselink in the application
Product: z_Archived Reporter: Tanuja <tanujakotappa>
Component: EclipselinkAssignee: Guy Pelletier <guy.pelletier>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P2 CC: eclipselink.orm-inbox, guy.pelletier, laeubi, michael.munn, mitesh.meswani, remy.suen, tom.ware
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: other   
Whiteboard:
Attachments:
Description Flags
Proposed changes none

Description Tanuja CLA 2011-06-21 04:08:10 EDT
Build Identifier: 

>
> Customer is using GlassFish Server Open Source Edition 3.1 (build 43) with
> EclipseLink in their application.  They are getting NullPointerException (NPE) below when deploying their
> application.  NPE only happens if they switch to EclipseLink as the provider,
> no problem if they use Hibernate.
>
> Full NPE:
> ========
>
> [#|2011-04-03T19:28:19.484-0700|SEVERE|glassfish3.1|javax.enterprise.system.co
> re.com.sun.enterprise.v3.server|_ThreadID=117;_ThreadName=Thread-1;|Exception
> while invoking class org.glassfish.persistence.jpa.JPADeployer prepare
> method|#]
>
> [#|2011-04-03T19:28:19.484-0700|SEVERE|glassfish3.1|javax.enterprise.system.co
> re.com.sun.enterprise.v3.server|_ThreadID=117;_ThreadName=Thread-1;|Exception
> while invoking class org.glassfish.javaee.full.deployment.EarDeployer prepare
> method|#]
>
> [#|2011-04-03T19:28:19.484-0700|SEVERE|glassfish3.1|javax.enterprise.system.co
> re.com.sun.enterprise.v3.server|_ThreadID=117;_ThreadName=Thread-1;|Exception
> while preparing the app|#]
>
> [#|2011-04-03T19:28:19.484-0700|SEVERE|glassfish3.1|javax.enterprise.system.co
> re.com.sun.enterprise.v3.server|_ThreadID=117;_ThreadName=Thread-1;|Exception
> [EclipseLink-28018] (Eclipse Persistence Services - 2.2.0.v20110202-r8913):
> org.eclipse.persistence.exceptions.EntityManagerSetupException
> Exception Description: Predeployment of PersistenceUnit [em] failed.
> Internal Exception: java.lang.NullPointerException
> org.glassfish.deployment.common.DeploymentException: Exception
> [EclipseLink-28018] (Eclipse Persistence Services - 2.2.0.v20110202-r8913):
> org.eclipse.persistence.exceptions.EntityManagerSetupException
> Exception Description: Predeployment of PersistenceUnit [em] failed.
> Internal Exception: java.lang.NullPointerException
> at
> org.glassfish.javaee.full.deployment.EarDeployer.prepare(EarDeployer.java:166)
>
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLif
> ecycle.java:870)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.
> java:410)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.
> java:240)
> at
> org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
> at
> com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java
> :360)
> at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java
> :370)
> at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java
> :1067)
> at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.ja
> va:96)
> at
> com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(Command
> RunnerImpl.java:1247)
> at
> org.glassfish.deployment.autodeploy.AutoOperation.run(AutoOperation.java:145)
> at
> org.glassfish.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:577)
>
> at
> org.glassfish.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:4
> 63)
> at
> org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:395)
> at
> org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:380)
> at
> org.glassfish.deployment.autodeploy.AutoDeployService$1.run(AutoDeployService.
> java:213)
> at java.util.TimerThread.mainLoop(Timer.java:512)
> at java.util.TimerThread.run(Timer.java:462)
> Caused by: javax.persistence.PersistenceException: Exception
> [EclipseLink-28018] (Eclipse Persistence Services - 2.2.0.v20110202-r8913):
> org.eclipse.persistence.exceptions.EntityManagerSetupException
> Exception Description: Predeployment of PersistenceUnit [em] failed.
> Internal Exception: java.lang.NullPointerException
> at
> org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityMa
> nagerSetupImpl.java:1127)
> at
> org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFa
> ctory(PersistenceProvider.java:187)
> at
> org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoad
> er.java:205)
> at
> org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoad
> er.java:119)
> at
> org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:213)
> at
> org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.it
> eratePUDs(JPADeployer.java:486)
> at
> org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:220)
> at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:166)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLif
> ecycle.java:870)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.prepareBundle(EarDeployer.jav
> a:290)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.access$200(EarDeployer.java:8
> 6)
> at
> org.glassfish.javaee.full.deployment.EarDeployer$1.doBundle(EarDeployer.java:1
> 41)
> at
> org.glassfish.javaee.full.deployment.EarDeployer$1.doBundle(EarDeployer.java:1
> 38)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.doOnBundles(EarDeployer.java:
> 215)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.doOnAllTypedBundles(EarDeploy
> er.java:224)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.doOnAllBundles(EarDeployer.ja
> va:250)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.prepare(EarDeployer.java:138)
>
> ... 17 more
> Caused by: Exception [EclipseLink-28018] (Eclipse Persistence Services -
> 2.2.0.v20110202-r8913):
> org.eclipse.persistence.exceptions.EntityManagerSetupException
> Exception Description: Predeployment of PersistenceUnit [em] failed.
> Internal Exception: java.lang.NullPointerException
> at
> org.eclipse.persistence.exceptions.EntityManagerSetupException.predeployFailed
> (EntityManagerSetupException.java:210)
> ... 34 more
> Caused by: java.lang.NullPointerException
> at
> org.eclipse.persistence.internal.jpa.metadata.MetadataDescriptor.getProject(Me
> tadataDescriptor.java:1076)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.
> <init>(ClassAccessor.java:225)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.MappedSupercla
> ssAccessor.<init>(MappedSuperclassAccessor.java:204)
> at
> org.eclipse.persistence.internal.jpa.metadata.ORMetadata.reloadMappedSuperclas
> s(ORMetadata.java:550)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.
> addPotentialMappedSuperclass(ClassAccessor.java:498)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EmbeddableAcce
> ssor.discoverMappedSuperclassesAndInheritanceParents(EmbeddableAccessor.java:1
> 77)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EmbeddableAcce
> ssor.preProcess(EmbeddableAccessor.java:266)
> at
> org.eclipse.persistence.internal.jpa.metadata.MetadataProject.processStage1(Me
> tadataProject.java:1513)
> at
> org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMeta
> data(MetadataProcessor.java:484)
> at
> org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.proce
> ssORMetadata(PersistenceUnitProcessor.java:454)
> at
> org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityMa
> nagerSetupImpl.java:1081)
> ... 33 more
> |#]
>
> [#|2011-04-03T19:28:19.578-0700|SEVERE|glassfish3.1|javax.enterprise.system.to
> ols.admin.org.glassfish.deployment.admin|_ThreadID=117;_ThreadName=Thread-1;|E
> xception while preparing the app : Exception [EclipseLink-28018] (Eclipse
> Persistence Services - 2.2.0.v20110202-r8913):
> org.eclipse.persistence.exceptions.EntityManagerSetupException
> Exception Description: Predeployment of PersistenceUnit [em] failed.
> Internal Exception: java.lang.NullPointerException
> javax.persistence.PersistenceException: Exception [EclipseLink-28018]
> (Eclipse Persistence Services - 2.2.0.v20110202-r8913):
> org.eclipse.persistence.exceptions.EntityManagerSetupException
> Exception Description: Predeployment of PersistenceUnit [em] failed.
> Internal Exception: java.lang.NullPointerException
> at
> org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityMa
> nagerSetupImpl.java:1127)
> at
> org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFa
> ctory(PersistenceProvider.java:187)
> at
> org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoad
> er.java:205)
> at
> org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoad
> er.java:119)
> at
> org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:213)
> at
> org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.it
> eratePUDs(JPADeployer.java:486)
> at
> org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:220)
> at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:166)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLif
> ecycle.java:870)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.prepareBundle(EarDeployer.jav
> a:290)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.access$200(EarDeployer.java:8
> 6)
> at
> org.glassfish.javaee.full.deployment.EarDeployer$1.doBundle(EarDeployer.java:1
> 41)
> at
> org.glassfish.javaee.full.deployment.EarDeployer$1.doBundle(EarDeployer.java:1
> 38)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.doOnBundles(EarDeployer.java:
> 215)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.doOnAllTypedBundles(EarDeploy
> er.java:224)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.doOnAllBundles(EarDeployer.ja
> va:250)
> at
> org.glassfish.javaee.full.deployment.EarDeployer.prepare(EarDeployer.java:138)
>
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLif
> ecycle.java:870)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.
> java:410)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.
> java:240)
> at
> org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
> at
> com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java
> :360)
> at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java
> :370)
> at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java
> :1067)
> at
> com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.ja
> va:96)
> at
> com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(Command
> RunnerImpl.java:1247)
> at
> org.glassfish.deployment.autodeploy.AutoOperation.run(AutoOperation.java:145)
> at
> org.glassfish.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:577)
>
> at
> org.glassfish.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:4
> 63)
> at
> org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:395)
> at
> org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:380)
> at
> org.glassfish.deployment.autodeploy.AutoDeployService$1.run(AutoDeployService.
> java:213)
> at java.util.TimerThread.mainLoop(Timer.java:512)
> at java.util.TimerThread.run(Timer.java:462)
> Caused by: Exception [EclipseLink-28018] (Eclipse Persistence Services -
> 2.2.0.v20110202-r8913):
> org.eclipse.persistence.exceptions.EntityManagerSetupException
> Exception Description: Predeployment of PersistenceUnit [em] failed.
> Internal Exception: java.lang.NullPointerException
> at
> org.eclipse.persistence.exceptions.EntityManagerSetupException.predeployFailed
> (EntityManagerSetupException.java:210)
> ... 34 more
> Caused by: java.lang.NullPointerException
> at
> org.eclipse.persistence.internal.jpa.metadata.MetadataDescriptor.getProject(Me
> tadataDescriptor.java:1076)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.
> <init>(ClassAccessor.java:225)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.MappedSupercla
> ssAccessor.<init>(MappedSuperclassAccessor.java:204)
> at
> org.eclipse.persistence.internal.jpa.metadata.ORMetadata.reloadMappedSuperclas
> s(ORMetadata.java:550)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.
> addPotentialMappedSuperclass(ClassAccessor.java:498)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EmbeddableAcce
> ssor.discoverMappedSuperclassesAndInheritanceParents(EmbeddableAccessor.java:1
> 77)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EmbeddableAcce
> ssor.preProcess(EmbeddableAccessor.java:266)
> at
> org.eclipse.persistence.internal.jpa.metadata.MetadataProject.processStage1(Me
> tadataProject.java:1513)
> at
> org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMeta
> data(MetadataProcessor.java:484)
> at
> org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.proce
> ssORMetadata(PersistenceUnitProcessor.java:454)
> at
> org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityMa
> nagerSetupImpl.java:1081)
> ... 33 more
> |#]
>
> Regards,
> -Tanuja


Reproducible: Always

Steps to Reproduce:
1.Since it producible only in PRODUCTION, no testcase is available
2.
3.
Comment 1 Remy Suen CLA 2011-06-21 08:21:08 EDT
Please open EclipseLink bugs with EclipseLink.
Comment 2 Tom Ware CLA 2011-06-23 10:34:12 EDT
From an email conversation about this bug:

The fault (on our end) seems to lie on reloading a MappedSuperclass (from XML)
to an Embeddable class to create our internal metamodel.

If they annotated the mapped superclass (rather than map it in XML), it may get
them by the problem. Alternatively, it would seem that the embeddable class is
only annotated and if it were mapped in XML it could alleviate the problem
(oddly enough).

So may it may be as simple as adding in XML

<embeddable class="blah"/>

For the embeddable classes that inherit from a mapped superclass.
Comment 3 Tom Ware CLA 2011-06-30 15:14:41 EDT
Setting target and priority.  See the following page for the meanings of these fields:

http://wiki.eclipse.org/EclipseLink/Development/Bugs/Guidelines

Community: Please vote for this bug if it is important to you.  Votes are one of the main criteria we use to determine which bugs to fix next.
Comment 4 Guy Pelletier CLA 2011-07-06 09:00:33 EDT
Created attachment 199183 [details]
Proposed changes
Comment 5 Guy Pelletier CLA 2011-07-06 09:39:59 EDT
Changes have been submitted to both the 2.3.1 and trunk streams.

Verified by: Tom Ware

Tests: Metadata processing error. New test model created, with fix in place no NPE occurs.
Comment 6 Guy Pelletier CLA 2011-09-28 10:11:49 EDT
*** Bug 358795 has been marked as a duplicate of this bug. ***
Comment 7 michael.munn CLA 2011-11-02 23:18:30 EDT
Is this included in 2.3.1-M8 ??
Comment 8 Tom Ware CLA 2011-11-03 08:20:46 EDT
This fix should appear in 2.3.1 M8. (It was fixed quite early in our 2.3.1 development and likely appears as early as M2)
Comment 9 Eclipse Webmaster CLA 2022-06-09 10:07:35 EDT
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink