IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Glassfish et Payara Java Discussion :

Problème de déploiement EAR sur GlashFish avec Maven 2


Sujet :

Glassfish et Payara Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Problème de déploiement EAR sur GlashFish avec Maven 2
    Bonjour,
    Je développe une application Java Entreprise avec les technos suivante: Netbeans, GlassFich, Maven2, EJB, JSF, MySQL.
    Ce qui donne un projet ear qui contient 2 modules un ejb et un autre web.

    j'ai un soucis lors du déploiement (Run de netbeans), le ear ne charge pas le connecteur mySQL et provoque l'exception suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Grave: Exception while loading the app : com/mysql/jdbc/EscapeProcessor
    java.lang.ClassNotFoundException: com.mysql.jdbc.EscapeProcessor
    	at com.sun.enterprise.loader.ASURLClassLoader.findClassData(ASURLClassLoader.java:782)
    	at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:696)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    	at com.mysql.jdbc.ConnectionImpl.nativeSQL(ConnectionImpl.java:3915)
    	at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4147)
    	at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4103)
    	at com.sun.gjc.spi.base.ConnectionHolder.prepareStatement(ConnectionHolder.java:502)
    	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1474)
    	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1423)
    	at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.prepareStatement(DatabaseCall.java:697)
    	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:585)
    	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:535)
    	at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1717)
    	at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:253)
    	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207)
    	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193)
    	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.insertObject(DatasourceCallQueryMechanism.java:342)
    	at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:162)
    	at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:177)
    	at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:472)
    	at org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:80)
    	at org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:90)
    	at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:287)
    	at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58)
    	at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:844)
    	at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:743)
    	at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108)
    	at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85)
    	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2871)
    	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1516)
    	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1498)
    	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1449)
    	at org.eclipse.persistence.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:224)
    	at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:123)
    	at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:3799)
    	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1415)
    	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:636)
    	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1505)
    	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.issueSQLbeforeCompletion(UnitOfWorkImpl.java:3143)
    	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.issueSQLbeforeCompletion(RepeatableWriteUnitOfWork.java:346)
    	at org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:157)
    	at org.eclipse.persistence.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:68)
    	at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:435)
    	at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:855)
    	at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5136)
    	at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4915)
    	at com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:557)
    	at com.sun.ejb.containers.AbstractSingletonContainer.access$100(AbstractSingletonContainer.java:79)
    	at com.sun.ejb.containers.AbstractSingletonContainer$SingletonContextFactory.create(AbstractSingletonContainer.java:719)
    	at com.sun.ejb.containers.AbstractSingletonContainer.instantiateSingletonInstance(AbstractSingletonContainer.java:451)
    	at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:216)
    	at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:177)
    	at org.glassfish.ejb.startup.SingletonLifeCycleManager.doStartup(SingletonLifeCycleManager.java:155)
    	at org.glassfish.ejb.startup.EjbApplication.start(EjbApplication.java:177)
    	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)
    	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269)
    	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:301)
    	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461)
    	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
    	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
    	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
    	at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
    	at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
    	at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
    	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
    	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
    	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
    	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    	at java.lang.Thread.run(Thread.java:722)
    hors j'ai bien ajouter la dépendance au connecteur mySQL dans le pom du projet ejb et il figure bien dans ses dépendance.

    En cherchant un peut, j'ai trouver une solution qui n'est pas très propre à mon sens, qui consiste a copier manuellement le jar (mysql-connector) dans le répertoire lib de GlassFish ou dans le lib du domain (GlassFish).

    Es ce que qu'il qu'un aurai une autre solution plus pro, car cette solution ne me conviens pas trop, d'autant plus que compte automatisé le déploiement sur un serveur distant (en utilisant hudson).

    Merci d’avance.

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    problème résolu ?

    Citation Envoyé par ilcugino Voir le message
    hors j'ai bien ajouter la dépendance au connecteur mySQL dans le pom du projet ejb et il figure bien dans ses dépendance.
    un JAR ne peut pas contenir d'autres JARs. Si tu explore ton EAR manuellement, tu verras probablement que ton connecteur mySQL est absent.

    Dans le POM de ton projet EAR, inclu ton connecteur via le tag <jarModule> si tu ne souhaites pas inclure manuellement ton connecteur dans le réperoire lib de GF

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    merci Madfrix pour ta reponse,
    probleme non encor résolu,
    je me suis résigner à copier le connecteur MySql manuellement dans GF local même sur le serveur distant.
    Cela étant j'ai testé la solution proposer et ça donne rien. Merçi de détaillé si c'est possible la maniere de l'utiliser ce jarModule.

    Voici ce que j'ai fait:
    Dans le pom parent du projet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ......
     <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.13</version>
            </dependency>
        </dependencies>
        </dependencyManagement>
    ......
    et dans le pom du ear :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    ...
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-ear-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <version>6</version>
                        <defaultLibBundleDir>lib</defaultLibBundleDir>
                        <modules>
                           .........
                            <jarModule>
                                <groupId>mysql</groupId>
                                <artifactId>mysql-connector-java</artifactId>
                            </jarModule>
                        </modules>
                    </configuration>
                </plugin>
    ......
    mais hélas ça ne donne rien l'appli web se lance bien mais des qu'on essai d’accéder à la base exception.
    Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.EscapeProcessor.

    P.S: quand je parcoure le ear manuellement je retrouve bien le jar mysql-connector-java dans son lib !!!!!

  4. #4
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    J'avoue que l'erreur que tu as me laisses hyper perplexe.
    En effet, l'exception se produit à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    at com.mysql.jdbc.ConnectionImpl.nativeSQL(ConnectionImpl.java:3915)
    , ce qui veut bien dire que ton driver jdbc mysql a été chargé.
    Il ne trouve pas com.mysql.jdbc.EscapeProcessor à mon avis parce qu'il passe par un autre class loader (com.sun.enterprise.loader.ASURLClassLoader), mais je ne comprends pas trop pourquoi ...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    finalement on consultant quelque amis expert dans les applis J2EE/GlassFish il parait que la bonne pratique serait de copier le pilote mysql-connector dans le lib du domain, ou dans le lib de glassFish (GLASSFISH_HOME/lib) pour faire profiter tout les domains.

    Du coût, je mis le scope de la dependance vers mysql-connector en provided:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.18</version>
                <scope>provided</scope>
            </dependency>
    Résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déploiement sur Tomcat avec Maven 2
    Par amine_en_france dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 08/11/2011, 00h30
  2. Déploiement App Sur Tomcat avec Eclipse
    Par Jahroots dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 17/01/2008, 15h14
  3. Réponses: 6
    Dernier message: 31/10/2007, 22h02
  4. Problème de page blanche sur navigation avec html:link
    Par assistibm dans le forum Struts 1
    Réponses: 7
    Dernier message: 13/07/2007, 13h31
  5. Problème d'E.S. sur fichier avec open
    Par Bubonik software dans le forum C
    Réponses: 6
    Dernier message: 04/02/2004, 19h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo