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

Servlets/JSP Java Discussion :

[info] Architecture 3-tiers


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut [info] Architecture 3-tiers
    Bonjour,

    (pour ceux qui prenne le sujet en cours allé direct au post 5 voir 6)

    J'ai un probleme de connexion à une base MySQL dans une applet,
    je m'explique, lorsque je tester mon applet en local,je fais pour la connexion:
    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
     
        private String          pilote = "com.mysql.jdbc.Driver"; 
    	    private String          url = "jdbc:mysql://127.0.0.1:3306/ma_bdd";
      public void connect( String log, String pass)
    	    {   
    	        try
    	        { 
    	        Class.forName(pilote);
    	            conn = DriverManager.getConnection(url,"root","");
    	            stmt = conn.createStatement();
    	        }
    	        catch ( SQLException E)
    	        {
    	            JOptionPane.showMessageDialog(null,E); 
    	        }
    	        catch ( ClassNotFoundException E)
    	        {
    	            JOptionPane.showMessageDialog(null,E); 
    	        }
    	    }
    là tous fonctionne correctement, la connexion est réussit et je peut travailler sur ma bdd.

    Mais lorsque je remplace 127.0.0.1 par mon adresse IP (140.170.0.24 par exemple) pour accceder à ma base d'un autre poste, la connexion ne marche pas.
    De plus, d'un autre poste aucune exception n'est levée, par contre si je teste cette méthode sur ma machine, une SQLException est levée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.net.SocketException:java.security.AccessControlException: access denied (java.net.SocketPermission 140.170.0.24:3306 connect,resolve)
    De l'aide SVP

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    A priori, je dirai que c'est une question de droits...

    Regarde au niveau de ton serveur de base de données les droits d'accès que tu as mis. Est ce que tu ne te fais pas jeter a cause d'un blocage de l'adresse IP de la machine distante, lorsque tu veux te connecter sur ton serveur ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    Comment je peut vérifier tous ca? je suis sous easyPHP, j'ai regardé déjà pas mal de truc, mais rein ne ma parru suspect ...

    J'ai apparemment tout les privilège, mon log est resté root et je n'est pas de mot de passe...

  4. #4
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Tout à fait normal !!! Un applet n'est ABSOLUMENT pas autorisé (par java lui même) à attaquer une base de donnée distante (de même qu'à utiliser le disque dur client).
    Pour contourner cela il faut utiliser le fichier java.policy (sur le poste client, où s'exécute l'applet) et y rajouter ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    grant {
      permission java.net.SocketPermission "140.170.0.24:3306", "connect,resolve";
    };
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    Oula!!! la il faut m'en dire plus nuke_y.

    Je peut savoir comment tu fais ca?

    et c'est possible d'acceder à ce fichier par Java ? Comment puis-je faire pour que mes client accede à ma base ?

    Je suis dans la m.... c ca ?

  6. #6
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Absolument pas dans la m...

    Il suffit de localiser le fichier java.policy sur le disque de tes clients (souvent dans jre/bin je crois) et d'y rajouter la ligne que je t'ai dit (si ça marche pas, essaye de le copier dans le profile pour voir). Si c'est des clients dans un réseau interne, c'est le boulot de l'admin/du support, si c'est via Internet c'est INTERDIT d'attaquer une BDD via un applet et il faut passer à une architecture 3 tiers.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    Si si je suis dans la m.... parceque la il va falloir que je passe à une architecture 3 tiers car passe par l'internet.

    Et vu que je sais pas ce que c'est, bein y a du boulot... Dejà si tu peut m'en dire un peut plus ca serait sympa. Ou si tu as de bon liens la dessus, je suis preneur.

    Là tu viens de me miner ma journée

    Merci pour ton aide.

  8. #8
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Bah tu voulais quand même pas qu'un applet java téléchargé par une page web puisse attaquer direct une BD quand même ??? Je te rappelle que dans ce cas les paramètres de connexion à la BDS (login, mot de pass)sont en DUR dans le code !!! Autant dire que tu offres à n'importe quel script kiddy les clés de ta baraque ...

    Bon alors une archi 3 tiers. Déjà, tu pourrais recycler le sujet et changer le titre. Ensuite ça dépend de ton environnement.
    Dans le meilleur des cas (tu as la main sur ton serveur) tu installes un petit serveur TOMCAT sur le serveur de ta BDD ou (et c'est mieux) sur un autre serveur qui sera le serveur d'application. Et tu écris un servlet qui reçoit à une requête (je te conseille vivement de passer par du HTTP), s'occupe d'attaquer la BDD et qui renvoie comme réponse à la requête les résultats obtenus de la base. Ca se fait en 3/4 jours si tu débutes (1 jour pour le serveur TOMCAT, 1 à 2 jours pour écrire les servlets et les tester, 1/2 journée pour écrire le code qui attaque la BDD).

    Au fait si MySQL intégre DEJA un serveur d'appli, te fais pas chier, utilise le, tu gagneras gras de temps.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    Moi je veut bien ne pas me faire chier mais tout ca et un peu flou pour moi, je sais pas si MySQL intégre déjà un serveur d'appli et je sais pas trop comment le savoir.

    Et ce serveur d'appli remplacerai TOMCATc'est bien ca ?

  10. #10
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    oui.

    Bon comme je te le disais pas MP, on PEUT à la rigueur accepter que si tu as, disons 50 utilisateurs qui se connectent par Internet, tu créés 50 utilisateurs différents sous MySQL et que ce soit MySQL qui fasse l'authentification. Dans ce cas, au démarrage de l'applet ils rentrent leur login/mdp de MYSQL, l'applet se connecte à MySQL et il récupère les données si tout est ok. Mais DE TOUTES FACONS tu devras modifier java.policy.

    Sinon tu peux aussi créer des cookies (mais bon pr 60000 valeurs...). C'est la seule méthode portable de mémorisation de paramètres côté client.

    Autre question, d'après ce que tu m'as dit je me demande POURQUOI une applet ? Un client lourd ne suffirait-il pas?

    Si tu nous expliquais ton projet ?
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Exact, j'avais pas tilte que c'etait une applet ton projet...

    Effectivement, la meilleure solution pour gerer ton soucis est de passer sur un serveur d'application. Tu vas un peu galerer au debut pour Tomcat, mais des que tu as compris le principe, apres c'est royal...

    Sinon, tu peux aussi redefinir ton projet en tant qu'application, et faire une version deployable. Par contre, l'install sera un peu plus lourd, car tu vas devoir deployer les librairies Java (en gros le jdk avec...)

    Ca marche aussi, j'avais fait ca sur un projet ou je devais realiser un masque de saisie assez complexe, avec une base MySQL derriere... (Je faisais pas de PHP a l'epoque...) C'est un peu plus galere a deployer apres, mais si tu maitrises pas trop mal l'architecture Java, tu dois pouvoir le faire... Par contre, tu ne passeras plus par un browser internet, mais par une interface graphique classique. Tu le lances simplement avec un bat, et limite tu fais aussi un install a partir de fichier bat.

    Enfin, c'est une solution si tu veux eviter d'avoir a passer par Tomcat...
    Tu livres par contre un install sur CD ou quelquechose du genre. (Donc, pas telechargeable n'importe comment...) Si c'est une appli grand public, pas le choix, c'est Tomcat...

    Une derniere chose, tu peux aussi faire ca a partir d'un langage de script, type PHP, qui remplace l'interface de ton applet, et qui appelle un programme Java (en gros, ton code) et qui recupere les donnees souhaitees... Tu evites les problemes de login et de mot de passe, car c'est géré sur le serveur, qui, LUI, se connecte a la DB...

    Ca revient a faire faire ce que fait Tomcat, en moins bien, mais c'est aussi une solution...

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    Je te remercie pour toutes tes solutions, j'exclu l'option application , j'y avais déjà songé mais ca ne peut pas correspondre au besoin.

    Sinon je vais reflechir au deux autres solutions, mais je penche pour la solution tomcat. Et du coté de mon serveur pour faire le servlet, est-ce que je peut utiliser les JSP ?

  13. #13
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Nan ce dont tu as besoin toi ce sont des servlets, pas des JSP (JSP servent à construire des pages dynamiques avec du code métier, un servlet va te construire un flux de données qui sera envoyé au client, si possible sans trop de code métier dedans).
    Dans l'idée tu pourrais même te débrouiller JUSTE avec un CGI (je sais pas si tu as connu cette époque des www.monsite.com/cgi?...) mais bon en java, autant utiliser TOMCAT et pas réinventer la roue.

    SINON tu peux peut-être utilisé Java Web Start, je crois que ça permet de déployer des applis lourdes chez un client mais via le web (comme une appli lourde qui se télécharge, s'installe et s'exécute toute seule). Ca pourrait régler parfaitement ton problème...
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    En réalité on m'a demandé de ne rien installer chez le client. Donc pour Java Web Start ca peut pas allé.

    Je suis en train de me mettre dans tomcat là. Si j'ai un probleme ne soyez pas surpris de revoir une question naze sur le forum

    Mais si j'ai bien compris le principe mon applet va envoyé des requete à mon servlet qui lui va revoyé des requete SQL à ma MySQL et c'est le serveur Apache qui les renvoie ? C'est bien ca?

  15. #15
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Sauf que tu t'exprimes mal ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Applet ----HTTP--> SERVLET ----SQL---->MYSQL
                                                                     |
    Applet <---HTTP--- SERVLET <---SQL-----MYSQL
    Sinon java web start n'installe pas je crois il DEPLOIT une appli lourde chez le client et la vire après, c pas une installation. Tu devrais QUAND MEME te renseigner. Sinon bah, tomcat est SUREMENT la solution la meilleure (mais pas la plus ... facile/évidente/basique/rapide à mettre en place).

    Note : je pense que les questions sur TOMCAT seront plus à leur place sur le forum approprié
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  16. #16
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 65
    Points : 74
    Points
    74
    Par défaut
    Puisque la solution TOMCAT semble prendre le pas, quelle est l'utilité de ton applet ?
    Ne peux tu pas passer à une appli tout web (i.e. jsp+(struts+)+servlets) ?

    NB : bjour nuke_y à qui le z manque.

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Si tu utilises des JSP, tu vas avoir besoin d'avoir des objets java complexes, et specifiques a ton appli, sauf si tu tiens a reecrire tout ton code Java dans des JSP... (inutile et galere...)

    Tu peux le faire en JSP, mais ca ne resoudra aucun de tes problemes, et tu auras quand meme besoin d'avoir un serveur d'application... Autant faire ta servlet directement, la dessus, les JSP vont te poser plus de soucis qu'autre chose...

    Sinon, en servlet, tu n'as pas forcement besoin d'avoir une applet avant, tu peux passer par une interface classique HTML, qui, elle va appeler ta servlet... Tu geres juste au niveau de ta servlet des flux http... ou autre si tu veux... J'ai fait passe une appli de cette maniere pour la generation de pages dynamiques (txt, html, ou pdf) en faisant de la reconstruction des factures, en allant chercher les donnees sur une base de donnees. Si c'est de l'informatif comme ca, ca doit passer assez facilement en servlet.
    En plus, tu dois avoir 95% de ton code deja developpe, c'est juste une adaptation pour faire passer en servlet...

  18. #18
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Tiens salut pimousse, je savais pas que tu étais sur DVP toi aussi? Ouaih le z en fait c'est que j'ai créé le compte et oublié le mpd ...

    Bon sinon on tourne en rond là, soit ce sujet est RESOLU soit tu nous expliques ton projet et tes contraintes et on t'aide mais là on réflechi dans le vide.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  19. #19
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 65
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par nuke_y
    Tiens salut pimousse, je savais pas que tu étais sur DVP toi aussi? Ouaih le z en fait c'est que j'ai créé le compte et oublié le mpd ...
    Lol. M'emmerde au boulot, c'est tout. Je fais de la doc tte la journée.

  20. #20
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    si j'ai bien compris le fond du problème, tu cherches à interroger une BD MySQL depuis une applet sans présupposer de la machine, si elle en a les droits ou non dans son policy

    Une solution serait de faire en sorte de véhiculer ta requête sur un webservice, pour ma part j'ai essayé un couple PHP+XML qui fonctionne bien.
    Une plateforme J2EE fait tout aussi bien l'affaire, le truc comme je pense il a déjà été dit c'est de faire en sorte de rester dans les possibilités de base d'une applet, à savoir sur un port 80 ou 443 et vers un domaine ou elle se trouve.


    L'histoire de servlet ou applet, après ca dépend beaucoup de ce que tu dois e n faire

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

Discussions similaires

  1. Architecture 3 tiers : quelle est la véritable nouveauté ?
    Par unix27 dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 11/03/2007, 18h21
  2. [VB.NET]Besoin de précision pour architecture 3-tiers
    Par Dnx dans le forum Windows Forms
    Réponses: 8
    Dernier message: 14/09/2005, 09h09
  3. [N-Tier] Problème conception architecture 3-tiers
    Par Royd938 dans le forum Autres
    Réponses: 3
    Dernier message: 17/06/2005, 11h47
  4. [VB.NET] Architecture n-tiers
    Par Dnx dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/02/2005, 19h10
  5. [Design Patterns] Architecture 3 tiers
    Par HPJ dans le forum Design Patterns
    Réponses: 1
    Dernier message: 29/07/2003, 11h49

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