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

Applets Java Discussion :

Faire communiquer une applet et une BD


Sujet :

Applets Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut Faire communiquer une applet et une BD
    Bonjour à tous,
    j'ai un espace d'hébergement gratuit chez http://123.fr
    Sur cet espace, j'ai stoqué une applet de test qui fonctionne bien (en même temps, elle ne fait rien à part afficher une UI )
    A présent, je voudrais que cette applet puisse récupérer des infos sur la BD (qui est également fournie par http://123.fr).
    Il semblerait qu'il ne soit pas possible que l'applet dialogue directement avec la BD : il faudrait qu'elle dialogue avec un programme serveur ?

    J'ai essayé de développer un CGI ainsi que un servlet et même une applet toute simple qui ferait serveur ... mais impossible de comprendre comment faire fonctionner le programme qui fera serveur et le faire communiquer avec l'applet

    La BD et une BD mysql - phpmyadmin (je suis pas un spécialiste mais n'hésitez pas à me demander plus d'infos)

    Si quelqu'un pouvait m'aider parce que là, j'ai regardé tous les exemples et touts les tutoriels : à chaque fois on montre que mettre dans le code du serveur, mais on n'explique pas comment installer et faire communiquer tout ça

    Merci d'avance pour votre aide.

    PS : je peux fournir mon adr messenger pour toute aide en direct si besoin.

    Krusty.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    ba alors ? personne n'a une idée ?

  3. #3
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2003
    Messages : 71
    Points : 65
    Points
    65
    Par défaut
    J'ai un truc dans le genre qui fonctionne mais c'est dans le cadre industriel :
    Un moteur de servlet Tomcat couplé à un serveur Web Apache.
    Petite explication :

    L'applet est téléchargé coté client, c'est donc pour des raison évidentes de sécurité qu'il n'a pas accès aux drivers de base de données qui sont eux situés sur le serveur.
    La solution que j'utilise est d'exécuté les requêtes (ainsi que les connexions) dans un sevlet qui lui par définition est exécuté coté serveur.
    Je transmet ensuite les informations à l'applet (qui bien sur les a demandé auparavant) via des flux de texte.

    Ce qui donne par exemple
    • J'ouvre une connexion vers mon servlet dans l'applet et j'envoi une requete :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    URL url = new URL(getCodeBase(),"MonServlet");
    URLConnection connexion = url.openConnection();
    connexion.setDoOutput(true);
    PrintWriter requete = new PrintWriter(connexion.getOutputStream(),true);
    // C'est ici qu'on envoi une requete
    requete.println("maRequete");	 
    requete.close();
    • Ensuite j'effectue un traitement dans la servlet en fonction de la requête

    • Et pour finir je récupère la réponse dans l'applet :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BufferedReader rep = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
    String reponse = rep.readLine();
    C'est peut être un peu du bricolage mais ça fonctionne, cela implique de devoir matérialiser tes informations par des chaines de caractères que tu vas ensuite traiter dans ton applet.
    Si tu ne peut pas battre ton ordinateur aux echecs, essaye le kick boxing

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    Ok je vois bien ce que tu veux dire !

    Mais comment se matérialise le servelt sur le serveur ?
    Il s'agit d'une classe java n'est ce pas ? Est ce qu'il me suffit de l'uploader sur le serveur pour que cela fonctionne ou faut-il que le servlet serveur soit en perpétuelle attente d'une requête ?

    Si c'est le second cas, cela veut il dire qu'il faut que je lance l'appli sur le serveur ? Si oui, comment puis je faire dans la mesure ou ce n'est pas moi qui héberge le serveur mais un fournisseur gratuit ?

    Merci pour ta réponse quoi qu'il en soit je vias continuer des tests.


    Krusty.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2003
    Messages : 71
    Points : 65
    Points
    65
    Par défaut
    Dans le cas d'un hébergeur gratuit ma solution parrait complexe puisqu'il faut que tu dispose d'un moteur de servlet (un peu comme un serveur web mais interpretant les servlets et les jsp) dans mon cas Tomcat.

    Le servlet est bel et bien coté serveur mais ce n'est pas un programme, c'est une classe héritant de javax.servlet.http.HttpServlet interprété par tomcat. C'est le moteur de servlet qui va attendre les requêtes et si une URL demandé correpond à celle de ton servlet alors il sera appelé.

    Si telle est ta question c'est le moteur de servlet qui scrute les requêtes et qui va appeler le (ou la, je ne sais jamais) bon(ne) servlet.
    Si tu ne peut pas battre ton ordinateur aux echecs, essaye le kick boxing

  6. #6
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut Reponse
    Bonjour,

    En effet, il n'y a pas de mystère, l'interrogation de ta BD, dans ton cas précis, ne peut se faire que sur le serveur lui-même. C'est relativement simplem à comprendre, et cela n'a rien à voir avec la méthode. Chacun sait que Mysql exploite des ports bien précis (3306 par défaut). Hors, un hébergeur qui veut garantir une certaine sécurité n'ouvrira jamais ce port. Moralité, personne depuis l'extèrieur ne peut passer par ce port, donc accéder à la base de données. C'est pourquoi cette charge de travail est à réaliser côté serveur, ce que démontre parfaitement phpMyAdmin. A ma connaissance, la solution la plus simple reste le php. En effet, des solutions java pure via servelt, jsp, jnlp, ou bien même du script CGI semblent trop lourdes, et pas forcément possible à mettre en oeuvre sur un serveur dont on est pas le propriétaire, toujours pour des raisons de sécurités.
    Donc à part imaginer un interrogateur local au serveur écrit en php qui renverrai dans le tuyau HTTP les données résultante d'une interrogation MySQL, couplé à une applet qui exploitera le package java.net, et qui initiera la requette http d'interrogation puis récuperera le flux réponse formé par le code php, je ne vois pas d'autre solution.
    Bref, pour résumer, java.sql ne peut être exploité correctement qu'en réseau local, soit en Intranet, ou à la rigueur en extranet, mais certainnement pas en Internet, sauf ouverture des ports concernés. Evidement, ces ports ne sont pas les même selon le SGBD.

    Bonne chance.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  7. #7
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 039
    Points
    6 039
    Par défaut
    J'y connais ketchi en applet car trop débutant en java mais worldchampion57 donne un bout de la solution. Etant donnée que les applet c'est coté client il lui est clairement interdit de ce connecter sur une base de données. L'applet à le même status que Flash. La solution est la même que pour flash. Flash ou Applet va faire une requete HTTP sur une page. Dans ton cas un JSP mais elle peut le faire sur une page ASP ou php. La requette http peut être ceci. http://127.0.0.1/mapage.jsp?liste=utilisateur. Simple non?
    mapage.jsp va lui répondre ceci.
    <liste>
    <prenom>Miloud</prenom>
    <prenom>Kasimir</prenom>
    <prenom>Albator</prenom>
    ...
    </liste>
    L'applet peut capturer ce bout de XML et là il suffit dans faire un tableau par exemple. Le XML sera généré par le fichier jsp comme il peut générer du html.

    Il me semble d'après mes vieux cours java qu'il y a une possiblité de se connecter mais il faut pas prendre cette voie. Alors oublie
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    Bonsoir,

    j'en étais arrivé aux conclusions de pursang

    c'est pourquoi j'ai fait un serveur PHP qui arrive à exécuter une requete sur ma BD et à renvoyer les résultats à java !

    Le seul pb c'est que la requête est pour l'instant en dur dans PHP et je n'arrive pas à passer la requête en paramètre : de java vers PHP

    Si quelqu'un a une idée, je suis prenneur

    Merci en tous cas pour vos réponses !

    Krusty.

  9. #9
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 039
    Points
    6 039
    Par défaut
    La page php attend une variable de type post ou get. Il suffit en java d'envoyer une requte http comme si tu tapais directement l'adresse url dans ton navigateur. http://127.0.0.1/monphp.php?requete=xxxxxx.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

Discussions similaires

  1. Appeler une méthode d'une applet dans une jsp
    Par salmoucha10 dans le forum Applets
    Réponses: 1
    Dernier message: 11/01/2011, 19h25
  2. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. [applet] ouvrir une applet dans une fenetre
    Par rohel dans le forum Applets
    Réponses: 4
    Dernier message: 19/02/2005, 00h57
  5. [Applet] Ouvrir une applet dans une page HTML
    Par debutant java dans le forum Applets
    Réponses: 4
    Dernier message: 04/06/2004, 17h11

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