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

JDBC Java Discussion :

Déploiement application avec MySQL


Sujet :

JDBC Java

  1. #1
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut Déploiement application avec MySQL
    Bonjour,

    Mon application, pour se connecter à ma BD, utilise le driver de MySQL. Jusqu'à maintenant, je développais sur la machine où se trouve le seveur MySQL.

    Ma question: pour le déploiement de mon application sur plusieurs postes distants qui devront se connecter à la bD (qui reste sur une machine à part), je compte créer le fichier jar de mon appli et faire installer aux utilisateurs JavaRuntimeEnvironnement sur leur poste; mais qu'en est-il du driver?
    Comment le déployer sur les postes distants?

    Est-ce une bonne idée de passer par JavaRuntimeEnvironnement?

    Merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 120
    Points
    120
    Par défaut
    C mySQL connector aue tu as?
    Si oui tu dois simplement mettre le driver dans le meme repertoire que ton jar.
    Il y a un max de tutos sur le net pour creer un jar
    N'oublie pas de changer le chaie de connexion. Tu ne te connecte plus a localhot mais au serveur. Verifie bien aue tu as les droits d'access distant au serveur mySQL. Pour cela "show grants" avec l'user utilise dans le programme.
    le nom d'user ne doit pas se terminer par @localhost mais par @% si tu veux pouvoir te connecter a la base de n'inporte quelle pc.
    N'hesite pas a demander si je n'ai pas ete clair je viens de deployer une app java qui se connecter sr un serveur distant.
    Bonne chance.

  3. #3
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Merci beaucoup pour ta réponse, elle va me servir de base de travail...

    Sinon, j'ai bien mysqlconnector5.X.X.jar

    Le nom d'user ne doit pas se terminer par @localhost mais par @% si tu veux pouvoir te connecter a la base de n'inporte quelle pc.
    Mon code en local:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String url = "jdbc:mysql://localhost/bd3";
    Connection con = DriverManager.getConnection(url, "user", "password");
    Ce que tu dis et que je cites, c'est dans quelle partie du code?, car comme tu peux le voir dans mon code, je remplacerais localhost par une adresse ip simplement, ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String url = "jdbc:mysql://195.XXX.XXX.XXX:3306/bd3";
    Ce n'est pas suffisant? Je ne vois pas où doit se rerouver le "@%" (mais j'ai bien compris sa fonction)
    En tout cas, tu as été clair pour le reste, merci encore pour ton enthousiasme

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 120
    Points
    120
    Par défaut
    Salut.
    Le @locahost est un droit de ton utilisateur qui est dans la base de donnee elle meme. Pour voir cela, je ne sais pas comment tu te connecte a ta base pour effectuer des modifs dessus, mais tu dois appeller la requete "show grants" avec un client mySQL. (Phpmyadmin ou le client fournit avec le serveur c toi aui voit)
    Et cette commande execute sur ton serveur vas te renvoyer tout les droits de ton user. Verifie bien que ces droits ne sont pas applicables uniquement sur localhost sinon tu ne pourras pas te connecter avec ton programme java.
    Je me suis permis de te dire de verifier ca car la semaine derniere j'ai galere a comprendre pourquoi mon programme ne fonctionnait pas.

    Ta chaine de connexion ma l'air bien

    Si tu as un probleme pour creer le jar, je te donnerai les instruction a suivre.
    Bonne chance

    Pour te former tu peux voir ces cours et tutoriels pour apprendre Java : http://java.developpez.com/cours/
    Par exemple le cours Java de jmdoudou est vraiment au top : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Salut,

    Dans ton cas, tu as installé sur les postes distants (utilisateurs) une JVM (ou JRE il ya 1 différence?) ou pas?
    Et une fois que ces utilisateurs ont en possession le jar en question, il l'éxécute comment? Avec des commandes?
    A vrai dire, je n'ai pas tout à fait fini le codage de mon appli. J'essaie de prendre un peu d'avance (étant en stage qui finit bientôt). Je n'ai donc pas encore mis les main dans le moteur du déploiement.

    PS: les utilisateurs ont un repertoire qui contient le jar de l'appli et le driver JDBC, si j'ai bien compris.

    Merci

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Points : 35
    Points
    35
    Par défaut
    Pour le lancement, tu peux créer un fichier bat. C'est peut-être le plus simple....

  7. #7
    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
    Ben avec un jar qui a un manifest pas besoin : doublie clic sur le jar

  8. #8
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Citation Envoyé par chtig
    Ben avec un jar qui a un manifest pas besoin : doublie clic sur le jar
    Merci pour vos réponses.

    Je fais le jar ok puis je suppose que dans le manifest il faudra dire où se trouve la commande javaw?

    Par exemple dans mon eventuel mf : Appli.mf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Main-Class: Appli
    (...)
    A supposer que mon main est contenu dans Appli.java.
    Comment j'indique le chemin d'accès à javaw (à la place des 3 petits ...)?
    Et après, ça suffit pour éxécuter avec un double-clic?
    Le driver JDBC (qui est lui-même un jar) se trouve où par rapport au .jar?
    D'après vos réponses j'en déduis qu'il faut absolument la JVM.
    Merci beaucoup

  9. #9
    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
    Oui il faut que la jre soit déjà installée.
    Pas besoin dans le manifest d'indiquer ou est javaw, windows le sait.
    Pour savoir ce que contient le manifest, cf là dessus (notamment tu auras le classpath qui permettra de trouver le jar jdbc)
    Le jar jdbc sera au même niveau (même répertoire) que le jar de ton appli.

    Voilà, mais un petit tour dans la te clarifiera encore les choses je suppose

  10. #10
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Merci pour le lien.
    J'ai suivi les instructions de la faq
    http://java.developpez.com/faq/java/...on#creationJar
    J'ai un repertoire que j'appelle application. Dans ce repertoire, je créé un repertoire META-INF. Dans META-INF je place mon fichier MANIFEST.MF qui contient les lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Main-Class: projet 
    Class-Path: .\mysql-connector-java-5.0.5-bin.jar
    (Avec un saut de ligne à la fin)
    Tous mes class sont dans le répertoire application, au même niveau que META-INF (META-INF ne contient donc que mon MANIFEST.MF)
    Mon driver se trouve parmi les class.

    J'entre la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jar cvfm monappli.jar META-INF/MANIFEST.MF
    Et j'obtiens monappli.jar (1ko ce qui a l'air bizarre).
    Quand je double-clic dessus, j'obtiens ce message d'erreur: "could not find the main class.The program will exit"


    Et pourtant, le main de mon appli se trouve bien dans mon fichier projet.java.

    Cela pourrait-il venir de la présence de plusieurs main? Car pour certaines classes de l'application, j'ai créé un main pour tester la classe en question.
    Cependant, dans le manifest, j'ai bien indiqué Class-Main: projet.
    J'ai raté qqch?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 120
    Points
    120
    Par défaut
    Salut
    Dans ce sens la c mieux.
    jar nom_du_fichier_jar MANIFEST.MF tes_fichiers-repertoires

  12. #12
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Citation Envoyé par openWorld
    Salut
    Dans ce sens la c mieux.
    jar nom_du_fichier_jar MANIFEST.MF tes_fichiers-repertoires
    Salut openworld,
    les fichiers_répertoires pour moi ce sera *.class ?
    Em me donnant, cette commande, dans quel repertoire courant te places-tu? Si tu indique juste MANIFEST.MF, je supposes donc que tu te place dans le repertoire META-INF, puis tu fais la commande citée.
    Je vais essayer quand même
    merci

  13. #13
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    J'ai trouvé une commande dans un bouquin:
    En se plaçant dans mon répertoire global application qui contient mes class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jar cmf META-INF/MANIFEST.MF/ appli.jar *.class
    J'obtiens un jar de 143ko mais quand je double-clic dessus, on m'annonce "failed to load main class".
    Je suis perdu là.
    J'ai essayé aussi la commande d'openworld mais j'obtiens un jar de 1ko...

  14. #14
    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
    Main-Class: projet
    Me semble un peu bizarre ... Normalement un nom de classe commence par une majuscule, et en plus tes classes sont dans le répertoire application donc je suppose que tu as un package application. Ta main class est donc application.projet ....

  15. #15
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Citation Envoyé par chtig
    Me semble un peu bizarre ... Normalement un nom de classe commence par une majuscule, et en plus tes classes sont dans le répertoire application donc je suppose que tu as un package application. Ta main class est donc application.projet ....
    Oui, en fait ma classe s'appelle "projet" avec un petit 'p' (c'est la seule classe dans ce cas), mais je crois que la majuscule est une affaire de convention à moins que je me trompe...

    En fait, je n'ai pas fait de package. application est juste un répertoire pour contenir mes .class et le repertoire META-INF.

  16. #16
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Manifest.txt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Main-Class: application.Projet
    J'ai suivi le conseil de chtig, changer ma classe projet en Projet, j'ai recompilé pour avoir un fichier Projet.class (avec un 'P' majuscule)

    J'ai essayé la commande suivante dans le tutoriel officiel (regardez l'exemple svp):
    http://java.sun.com/docs/books/tutor...ar/appman.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jar cmf application.jar Manifest.txt application/*.class
    Avec cette commande, j'obtiens un .jar de 230ko, mes .class ont donc été bien intégrés.
    Mais lorsque je double-clic sur le jar j'obtiens :"could not find the main class"
    Quand je fais la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -jar application.jar
    ,
    j'obtiens java.lang.NoClassDefFoundError: Projet
    Pas d'idée?

  17. #17
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Bonjour ,

    J'ai réussi avec la commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jar cfm appli.jar Manifest.mf  *.class
    (Dans la javadoc, ils ont manifest.txt, mais avec ce format, ça ne marche pas... j'ai donc repris la même commande mais en convertissant en .mf)
    Je résume la situation pour ceux qui vont rencontrer mon problème...
    J'ai un repertoire application, il contient le driver JDBC, tous mes .class et le fichier Manifest.mf[.

    Dans la fenêtre de commande DOS je me place dans le répertoire application. Je lance la commande sus-citée. J'obtiens mon appli.jar. Je double-clique dessus et ça lance mon application.

    Voilà, merci encore à ceux de ce topic qui m'ont aidé.

    edit: pour charger en plus le driver dans son jar, il faudrait faire cette commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jar cfm appli.jar Manifest.mf  *.class *.jar
    (carle driver est de type .jar)

    EDIT 30/05/07:
    Voici le contenu de mon Manifest.mf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Main-Class: projet
    Class-Path: mysqlconnectorXXX.jar
    (Avec au moins un saut de ligne à la fin)

    Il faut aussi que le mysqlconnector se trouve dans le même répertoire que le jar que l'on veut créer.

  18. #18
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Comme je vous l'ai dit, le jar s'execute bien sur la machine où j'ai développé. Mais lors d'un d'un essai sur une autre machine avec JRE installée, lorsque je double clic, j'obtiens "Could not find the main class. Program will exit"
    Alors qu'il s'agit du meme jar obtenu par C/C.
    D'où ça pourrait venir?

    Merci

  19. #19
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Roy Miro
    D'où ça pourrait venir?
    Lances le programme en ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -jar TonFichier.jar
    Tu devrais avoir plus de détail sur l'origine du problème...

    a++

  20. #20
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Merci pour ta réponse
    Je viens de le faire à l'instant, résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Exception in thread main java.lang.UnsupportedClassVersionError: Bad version number in . class file
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    J'ai lu ce topic:
    http://www.developpez.net/forums/sho...d.php?t=151091
    Mais je ne crois pas que mon cas soit similaire, cas j'ai developpé avec JDK1.6 et j'ai installé JRE1.6 sur la machine de destination.

    Est-ce p-e la chaine de connexion dans mon code source?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String url = "jdbc:mysql://localhost/bd3";
    Connection con = DriverManager.getConnection(url, "user", "password");
    J'ai ce ne devrait plus être localhost mais je voulais juste tester qu'un pouvait passer d'une machine à l'autre.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Déploiement application avec PHP
    Par DBA_OCP dans le forum Flex
    Réponses: 19
    Dernier message: 11/02/2011, 14h48
  2. [Déploiement]Application avec BDD
    Par atar64 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 14/04/2009, 16h23
  3. Déploiement d'une application avec MySql
    Par gibea00 dans le forum Débuter
    Réponses: 3
    Dernier message: 13/08/2008, 02h36
  4. Réponses: 1
    Dernier message: 12/01/2007, 15h56

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