Un exception incompréhensible lors du déploiement de mon EJB
Bonjour,
Je voudrais déployer mon projet EJB sous Glassfish V3 (J2EE6). J'utilise EclipseLink (JPA2.0).
J'arrive à faire tourner mon application sous forme de stand alone avec l'implémentation JPA en son sein (je gère les entity manager à la main) mais impossible de faire fonctionner JPA côté EJB.
Apparemment j'ai un problème de "weaving" d'une entité...
Voici l'exception:
Tome 1:
Code:
1 2
|
ATTENTION: Weaver encountered an exception while trying to weave class entities/Personne. The exception was: java.lang.NullPointerException |
Tome 2:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
GRAVE: java.lang.NullPointerException
at org.eclipse.persistence.descriptors.ClassDescriptor.createMultipleTableInsertOrder(ClassDescriptor.java:871)
at org.eclipse.persistence.descriptors.ClassDescriptor.adjustMultipleTableInsertOrder(ClassDescriptor.java:503)
at org.eclipse.persistence.descriptors.ClassDescriptor.preInitialize(ClassDescriptor.java:3341)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:429)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:406)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:671)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:620)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:368)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:151)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:207)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:195)
at org.glassfish.persistence.jpa.PersistenceUnitLoader.doJava2DB(PersistenceUnitLoader.java:273)
at org.glassfish.persistence.jpa.JPADeployer.load(JPADeployer.java:155)
at org.glassfish.persistence.jpa.JPADeployer.load(JPADeployer.java:55)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:175)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:216)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:338)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:637) |
Tome 3 T_T:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| GRAVE: Local Exception Stack:
Exception [EclipseLink-0] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.IntegrityException
Descriptor Exceptions:
---------------------------------------------------------
Exception [EclipseLink-60] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The method [_persistence_setadresse_vh] or [_persistence_getadresse_vh] is not defined in the object [entities.Personne].
Internal Exception: java.lang.NoSuchMethodException: entities.Personne._persistence_getadresse_vh()
Mapping: org.eclipse.persistence.mappings.OneToOneMapping[adresse]
Descriptor: RelationalDescriptor(entities.Personne --> [DatabaseTable(PERSONNE)])
Exception [EclipseLink-60] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The method [_persistence_setcompteVision_vh] or [_persistence_getcompteVision_vh] is not defined in the object [entities.Personne].
Internal Exception: java.lang.NoSuchMethodException: entities.Personne._persistence_getcompteVision_vh()
Mapping: org.eclipse.persistence.mappings.OneToOneMapping[compteVision]
Descriptor: RelationalDescriptor(entities.Personne --> [DatabaseTable(PERSONNE)])
Exception [EclipseLink-93] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The table [PERSONNE] is not present in this descriptor.
Descriptor: RelationalDescriptor(entities.Utilisateur --> [DatabaseTable(UTILISATEUR)])
Exception [EclipseLink-93] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The table [PERSONNE] is not present in this descriptor.
Descriptor: RelationalDescriptor(entities.Utilisateur --> [DatabaseTable(UTILISATEUR)])
Exception [EclipseLink-93] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The table [PERSONNE] is not present in this descriptor.
Descriptor: RelationalDescriptor(entities.Utilisateur --> [DatabaseTable(UTILISATEUR)])
Exception [EclipseLink-93] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The table [PERSONNE] is not present in this descriptor.
Descriptor: RelationalDescriptor(entities.Utilisateur --> [DatabaseTable(UTILISATEUR)])
Exception [EclipseLink-93] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The table [PERSONNE] is not present in this descriptor.
Descriptor: RelationalDescriptor(entities.Utilisateur --> [DatabaseTable(UTILISATEUR)])
Exception [EclipseLink-93] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The table [PERSONNE] is not present in this descriptor.
Descriptor: RelationalDescriptor(entities.Utilisateur --> [DatabaseTable(UTILISATEUR)])
Exception [EclipseLink-41] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: A non-read-only mapping must be defined for the sequence number field.
Descriptor: RelationalDescriptor(entities.ConnexionVision --> [DatabaseTable(CONNEXIONVISION)])
Exception [EclipseLink-41] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: A non-read-only mapping must be defined for the sequence number field.
Descriptor: RelationalDescriptor(entities.NotationAgent --> [DatabaseTable(NOTATIONPERSONNE), DatabaseTable(NOTATIONAGENT)])
Exception [EclipseLink-41] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: A non-read-only mapping must be defined for the sequence number field.
Descriptor: RelationalDescriptor(entities.Exploitation --> [DatabaseTable(SITE), DatabaseTable(EXPLOITATION)])
Exception [EclipseLink-41] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: A non-read-only mapping must be defined for the sequence number field.
Descriptor: RelationalDescriptor(entities.LienUtilisateurAgence --> [DatabaseTable(LIENUTILISATEURAGENCE)])
Exception [EclipseLink-41] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: A non-read-only mapping must be defined for the sequence number field.
Descriptor: RelationalDescriptor(entities.LienUtilisateurExploitation --> [DatabaseTable(LIENUTILISATEUREXPLOITATION)])
Exception [EclipseLink-41] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: A non-read-only mapping must be defined for the sequence number field.
Descriptor: RelationalDescriptor(entities.NotationPersonne --> [DatabaseTable(NOTATIONPERSONNE)])
Runtime Exceptions:
---------------------------------------------------------
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:478)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:406)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:671)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:620)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:368)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:151)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:207)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:195)
at org.glassfish.persistence.jpa.PersistenceUnitLoader.doJava2DB(PersistenceUnitLoader.java:273)
at org.glassfish.persistence.jpa.JPADeployer.load(JPADeployer.java:155)
at org.glassfish.persistence.jpa.JPADeployer.load(JPADeployer.java:55)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:175)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:216)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:338)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:637) |
Voici mon entité Personne incriminée:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Personne implements Serializable {
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
private CompteVision compteVision;
@OneToMany(mappedBy = "personne", cascade=CascadeType.ALL)
private List<Candidature> candidatures;
/**
* @return the serialVersionUID
*/
public static long getSerialVersionUID() {
return serialVersionUID;
}
/**
* @param aSerialVersionUID the serialVersionUID to set
*/
@OneToMany(mappedBy = "personne", cascade=CascadeType.ALL)
private List<ElementSalaire> elementsSalaire;
@OneToMany(mappedBy = "executeur", cascade=CascadeType.ALL)
private List<Action> actionsExecution;
@OneToMany(mappedBy = "emetteur", cascade=CascadeType.ALL)
private List<Action> actionsEmission;
@OneToMany(mappedBy = "recepteur", cascade=CascadeType.ALL)
private List<Action> actionsReception;
@OneToMany(mappedBy = "evalue", cascade=CascadeType.ALL)
private List<NotationPersonne> notationsPersonne;
private static long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String nom="";
private String prenom="";
@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
private Adresse adresse;
@Temporal(javax.persistence.TemporalType.DATE)
private java.util.Date dateNaissance;
private String tel="";
private String portable="";
private String fax="";
private String mail="";
private String lieuNaissance="";
private String id2="";
private String titre="";
private String nationalite="";
//getters et setters
} |
Je n'arrive pas à trouver le bug... J'ai vraiment du mal à comprendre ce qu'il ne va pas. Quelqu'un pourrait-il m'aider?
Merci
Edit: J'ai trouvé un post sur le forum Eclipse qui ressemble à mon problème:
http://www.eclipse.org/forums/index....g&goto=509871&
EclipseLink-93 Exception Description: The table [item] is not present in this descriptor
Bonjour,
J'obtenais également l'erreur «EclipseLink-93 Exception Description: The table [item] is not present in this descriptor» après avoir modifié substantiellement plusieurs de mes entités.
Il appert que la source de mes problèmes résidait dans des oublis de ma part qui engendraient des instructions incohérentes et qui faisaient que mes entités ne collaient plus avec ma base de données et ni avec les nouveaux liens entre mes tables.
Le lien suivant m'avait mis sur la piste :
http://stackoverflow.com/questions/1...ent-in-this-de
Concrètement j'avais les deux erreurs d'identification suivantes dans mon code :
1) Le nom de la table spécifié dans la balise @Table ne correspondait pas à la bonne table dans la BD:
Code:
1 2 3
| @Entity
@Table(name = "droits")
public class DroitsCSM implements Serializable { |
La correction : @Table(name = "droits_csm")
2) Le nom du champ dans une relation @OneToMany était erronné :
Code:
1 2 3 4
|
@JoinColumn(name = "comite")
@ManyToOne
private ComitesNoms comite; |
La correction : private Comites comite;
Donc, si vous obtenez cette erreur, vérifiez attentivement la cohérence de votre code...