cs_Nisnor
Messages postés48Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention 9 mars 2007
-
10 mars 2006 à 23:04
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
15 mars 2006 à 00:03
Salut à tous...
Heu je sais que j'ai déja fais un topic a ce sujet mais impossible de remettre la main dessu (si quelqu'un pouvait me dire comment on fait d'ailleurs ça m'éviterais de refaire ça ;))
Alors voila problème: J'ai un applet Java qui doit absolument récupérer des données d'une base de données...Je pense avoir compris le truc de base et pour accéder à ma base de donnée, il faut charger un driver (un pont JDBC-ODBC)...
Pour cela j'ai tapé le code suivant:
try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException e)
{JOptionPane.showMessageDialog(null, "Impossible de charger le pilote jdbc:odbc");}
mais lors de l'éxécution de l'applet avec Appletviewer, ça me dit java.security.AccessControlException : access denied(Java.lang.RuntimePermission accessClassInPackage sun.jdbc.odbc)
Ce qui me plait pas trop c'est que dans le livre que j'utilise il est marqué :"Le modèle de sécurité pour l'éxécution des applet interdit l'utilisation de ce type de driver depuis une applet Java du type untrsuted"
Donc ces deux argument voudrait dire qu'en gros je ne peux pas utiliser de pont JDBC-ODBC dans mon applet...
Est-ce Vraie? Si oui, comment puis-je me connecter a ma base de donnée (MySQL5 installé sur mon pc avec Apache2 et PHP5 ainsi que MySQL Driver 3.51) sans avoir des codes incompréhensible?(Apparemment, il suffirait de trafiquer la classe java.security...J'ai vu qu'il y avait des classe AccessControlContext et autre...Mais je sais pas comment m'y prendre)
Merci de vos réponse (Punaise depuis le temps que je cherche réponse à ça, je commence a croire que personne au monde ne s'est connecté a une BDD avec un applet Java :s:s Pitiéééééé aidezzz-moi :'(:'()
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 11 mars 2006 à 02:33
Salut,
j'ai traité le sujet avec [../auteurdetail.aspx?ID= 256798 alonsyl] cette semaine si tu baisse les yeux dans la liste des dernier post tu trouveras "JDBC => java.security.AccessControlException" et si tu vas plus loins dans la recherche des derniers post tu trouveras "[SUN-JDBC-ODBC-JDBCODBCDRIVER-CLASSNOTFOUNDEXCEPTION-11_681838.aspx Sun.jdbc.odbc.jdbcodbcdriver => classnotfoundexception]
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 12 mars 2006 à 23:00
Salut,
ba le port 3306 c'est le port par defaut de mysql et normalement il te
faut le mettre sinon comment tu veux que le serveur route les bon
paquets destiné à mysql .
telecharge le driver de mysql ici et utilise le driver situé dans com.mysql.jdbc.Driver
ensuite assure toi que le driver soit dans le classpath apres verifie la partie de création du statement
WORA
Vous n’avez pas trouvé la réponse que vous recherchez ?
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 14 mars 2006 à 18:08
Qd tu signe une applet tu signe TES classes tu rend utrusted TES
classes pas celle de mysql qui reste untrusted sinon signe aussi le jar
de mysql (regarde la licence pour voir si tu as le droit)
cs_Nisnor
Messages postés48Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention 9 mars 2007 11 mars 2006 à 09:36
Bon j'ai compris comment créer le fichier de signature...
Mais comment on fait pour avoir un fichier .jar???
Je n'ai que des .java pour la source et des .class pour le byte code...Mais pas de jar....
cs_Nisnor
Messages postés48Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention 9 mars 2007 11 mars 2006 à 15:25
Expliqué sur le net c'est bien gentils en tapant jarsigner et tout un bazard a coté mais ce qu'ils ne précisent pas c'est que ça demande un "passPhrase" et quand je fais entrer pour valider ça me sort qu'il ne peut pas trouver un fichier .keytruc là...Donc leur méthode n'est pas sufisament détaillé pour que tout le monde puisse s'en servir sans faire d'erreur...
cs_Nisnor
Messages postés48Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention 9 mars 2007 11 mars 2006 à 23:56
GENIAALLLL :D:D
J'ai enfin réussi a coller un certificat a mon applet et j'ai ENFIN réussi a charger un pilote de pont JDBC-ODBC dan mon applet....
Aaaaaaah ça fait plaisir...je progresse depuis le temps...Un petit résultat annonce un bon début :D
Pour ceux que ça pourrait aider:
Pour créer un jar a partir d'un fichier class: <li>Allez dans la commande MS-DOS, et entrez dans le dossier bin qui se trouve là ou vous avez installé le SDK Java (pour ma part c'est e:\java\bin\</li><li>Tapez "jar cvf <nom_du_fichier_de_sortie>.jar <nom_du_byte_code1>.class <nom_du_byte_code2>.class <etcetc>"</li><li>Appuyez sur "Entrée"...Un descriptif des fichiers compressés apparaît dans la fenetre de commande et un fichier nommé <nom_du_fichier_de_sortie>.jar apparaît dans le dosier bin (si vous n'avez pas changé de racine bien sur)</li>Pour créer un certificat:
<li>Restez dans l'invite de commande MS-DOS dans le meme répertoire $racine du SDK Java$\bin\</li><li>Tapez "keytools -genkey -alias <Nom_du_certificat>"</li><li>Entrez alors les paramètres demandés a savoir le mot de passe, votre prénom suivie avec un espace de votre nom etc etc</li><li>Validez en appuyant sur "entrée"et à la demande de saisi d'un mot de passe (je sais plus ce que c'est), laissez vide et validez en appuyant sur "entrée"</li><li>Un fichier sans extension est alors créé dans le dossier bin</li>Pour signer votre Archive Jar:
<li>Toujours dans l'invite de commande MS-DOS et toujours dans le meme dossier, tapez "jarsigner -signedjar <nom_de_l'archive_signée>.jar <nom_de_l'archive_non-signée>.jar <Nom_du_certificat>". L'archive signée est le nom sous lequel sera créé le fichier archive java après l'application du certificat</li><li>Saisissez le mot de passe précedemment entré lors de la création de votre certificat et validez...</li><li>Je ne sais pas sous les autres versions mais sous le JDK 1.5, cela affiche que le certificat sera expiré dans 6mois...Je pense donc qu'il faudrat renouveler cette opérations tous les 6 mois</li>Et voila vous avez à la sortie de tout ça un beau fichier .jar qui contient vos ou votre byte-code(s) avec un petit certificat qui s'affichera a chaque fois que votre applet sera chargé dans une machine vituelle (Ca demande si l'utilisateur veut faire confiance a l'auteur affiché (votre Prénom et Nom saisie lors de la création du certificat seront affichés ici) en éxécutant le code de l'applet...)
Pour se servir d'une archive jar dans une page html, vous tapez le code de base .class" archive="<nom_de_l'archive_signée>.jar" height="<Largeur en pixel>" width="<Hauteur en pixel>">
Et voila qui vous permettra de charger les drivers nécessaires dans vos applet :D:D
J'espère que ce mini-tutorial en aidera plus d'un :D
Maintenant pour ma part j'ai encore un autre problème...Ca me marque que la source de donnée est introuvable et que le nom de pilote est non spécifié...
J'ai utilisé ce code:
Connection con = DriverManager.getConnection("jdbc:odbc:mybdd","","<mot_de_passe>");
dans un groupe try{}catch(SQLException e){}
Une petite piste please? :D D
Merci :D
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 12 mars 2006 à 00:20
tu as bien créé ta base niveau windaube? tu as mis ou ton fichier
.chéplusquoi qui contien la base tu as bien renségné ce fichier dans le
service odbc sur ton win?
cs_Nisnor
Messages postés48Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention 9 mars 2007 12 mars 2006 à 17:57
Alors j'ai trouvé pourquoi...C'est parsque j'ai utilisé un nom de driver ODBC différent dans la source de donnée ODBC windows et dans mon applet...Forcément ça pouvais pas marcher -_-'
Maintenant je rencontre deux autre problème:
1)J'ai réussi a me connecter a ma BDD et a accéder a une table...Mais lors de l'affichage des résultats je met
JOptionPane.showMessageDialog(null, "Votre nom d'utilisateur: "+resultats.getString(1));
dans un try-catch et ça me sort que l'état du curseur est non-valide...Ca veut dire quoi?
2)Une problème de transport sur le net est apparu...En effet, si j'éxécute l'applet sur mon serveur, pas de problème...Mais dès que je tente de l'éxécuter sur un pc-client, il charge le pilote de pont JDBC-ODBC correctement puis il me met que la source de donnée est introuvable et que le nom de pilote n'est pas spécifié...Ce qui me parait normal en sachant que le pc-client ne possède pas le driver installé dans la source de données ODBC...
Comment puis-je faire alors pour faire en sorte que au lieu de prendre le driver de données du pc-client se redirige tout seul vers mon serveur?
En deux mot, comment me connecter a partir de mon applet, s'éxécutant sur un client, a ma base de donnée stockée sur mon serveur?
cs_Nisnor
Messages postés48Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention 9 mars 2007 12 mars 2006 à 18:22
Alors je précise...
Mon serveur est équipé de Apache 2 avec PHP5 et MySQL5
Dans mon applet, j'utilise finalement le driver JDBC fourni par MySQL (plutot qu'un pon JDBC-ODBC...Ca me parait plus simple et plus rapide)
Je reprend donc les étapes-->Je tente de charger le driver, c'est un succès aussi bien sur le serveur que sur le client :D(Lignes de codes:
try {Class.forName("org.gjt.mm.mysql.Driver").newInstance();
JOptionPane.showMessageDialog(null, "Driver Chargé ");//Chargement du driver de pont JDBC-ODBC
}
catch(Exception e) {JOptionPane.showMessageDialog(null, "Erreur de chargement des drivers: "+e);}
)...Mais lors des opération suivante a savoir ceci:
con = DriverManager.getConnection("jdbc::mysql://localhost/mybdd","user","mot_de_passe");
dans un try-catch
Bin ca me met SQLException: No suitable Driver aussi bien sur le client que sur le serveur...:s
cs_Nisnor
Messages postés48Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention 9 mars 2007 12 mars 2006 à 21:49
Effectivement ça marche mieux...Non pas a cause du double deux-points mais a cause de l'ip qui était imcomplète...j'avais juste entré l'IP 127.0.0.1 sans mettre le port utilisé a coté (enfin je pense que c'est le port non?)
Alors...J'ai deux résultats
Lors de l'éxécution sur le serveur ça me met une erreur d'éxécution (message de moi) et ca fait du SQLException:Before Start of ResultSet ...
Et lors de l'éxécution coté client...Attention les yeux j'ai un message de taré :D que voici :
com.mysql.jdbc.CommunicationException Communication link Failure due to underlying exception:
**BEGIN NESTED EXCEPTION**
java.net.SocketException
MESSAGE:java.net.ConnectException: Connection timed out: connect
et la suite c'est le descriptif des endroits ou a été trouvé l'erreur
Une solution à ça? (comme IP j'ai rentré celle du serveur qui héberge mon site web et par la meme occasion la page contenant l'applet)
cs_Nisnor
Messages postés48Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention 9 mars 2007 13 mars 2006 à 08:34
Nouveau message d'erreur:
Applet éxécuté sur le serveur mais en utilisant l'adresse IP du serveur au lieu de 127.0.0.1 dans l'applet:
SQLException:null, message from server: "Host 'amd3700' is not allowed to connect to this MySQL server"
Je retente dès que possible en passant par le 127.0.0.1 dans l'applet
cs_Nisnor
Messages postés48Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention 9 mars 2007 13 mars 2006 à 21:12
Bon bin si je met l'adresse intranet et que j'éxécute l'applet sur le serveur, ça marche sans broncher ;)
Je comprend pas pourquoi l'applet lorsqu'il s'éxécute sur un client, me dit que "le client <nom_du_pc-client> ne permet pas la connexion a ce serveur MySQL"...:s J'ai tenté de débloquer des ports dans le Firewall de windows XP mais sans succès...Et je n'utilise pas de routeur...
Une soluce?
PS: J'ai mis comme adresse "IP", l'URL de mon site web qui pointe vers l'IP du serveur...Ca marche "très bien"...Mis a part ce problème de permission