Page 1 sur 3 123 DernièreDernière
Résultats de 1 à 10 sur 24

Sujet : [Applet] Ecriture de fichier

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    10

    [Applet] Ecriture de fichier

    Bonjour, je suis en train d\'ecrire un applet pour une application type Quizz sur un intranet et je souhaiterais que lorsqu\'une personne souhaite participer, un fichier soit creer sur le disque du serveur (meme adresse que le fichier .class de l\'applet) afin que le joueur puisse rejouer sans avoir a redonner son pseudo (et j\'enregistre le score etc...). J\'ai deja vu des reponses sur certains forums mais je ne peuxpas utiliser de cgi-bin pour l\'instant. J\'ai entendu parler d\'une solution possible en utilisant SecurityManager... ?? Merci d\'avance pour votre aide !!

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    Salut fredlgm et Bienvenu sur MoteurProg

    Je ne comprend pas tout ce que tu decris mais il me semble que tu est confronté a une limite de securité imposée par Java pour les Applets :

    si tel est le cas, tu peux contourner le problème par une signature (certificat)

    voie sujet \'internet applet signature\' dans la FAQ Java

    donne des news :wink:

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    10
    Merci pour cette reponse si rapide !! Effectivement, c\'est bien un probleme de securite impose par les applets. Je vais essayer les indications donnees dans l\'autre discussion et je vous tiens au courant !
    A+
    Fred :

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    10
    Me voila de retour ! J\'ai ete un peu deborde et je n\'ai pas pu m\'occuper de mon probleme aussi vite que prevu... Mais j\'ai bien essaye de signer l\'applet... Et cela ne marche toujours pas... Pour etre plus clair, j\'ai fait un tout petit programme qui ne fait que creer un fichier (du moins en theorie !). Voila le script :

    Code:
    import java.io.*;
    
    class Test extends java.applet.Applet{
    
           public void init()  {
    
                  try {
                      FileWriter fos = new FileWriter(\"pidou.dat\");
                      fos.write(\"Nom = pidou\",0,11);
                      fos.close();
                  } catch (Exception e) { System.out.println(\"Erreur = \"+e); }
    
           }
    }
    Utilise en tant que programme (en remplacant inti() par main(String[] arg), le programme me cree bien un fichier pidou.dat, mais l\'applet insere dans le fichier html suivant :
    Code:
    <HTML>
    <HEAD><TITLE> Test 2004 </TITLE></HEAD>
    <BODY BGCOLOR=\"#008888\">
    <CENTER><BR><BR>
    <APPLET CODEBASE=\"./\" CODE=\"Test.class\" ARCHIVE=\"STest.jar\" NAME=\"Test\" WIDTH=700 HEIGHT=430></APPLET>
    </CENTER>
    </BODY>
    </HTML>
    ... me genere une erreur (l\'applet est pourtant signe en suivant la procedure que vous m\'avez suggere).

    Je dois donc encore faire qqe chose de pas correct... mais quoi ???

    Merci d\'avance pour votre aide !!!

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    ... me genere une erreur
    Laquelle ? Ou est le message d\'erreur ?

    Est ce : Erreur = java.security.AccessControlException: access denied (java.io.FilePermission pidou.dat write)
    ? ou autre chose ?

    Sans le message d\'erreur, autant chercher une aiguille dans une ...

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    10
    Voila le message qui s\'affiche dans la console Java :

    Code:
    com.ms.security.SecurityExceptionEx[Test.init]: cannot access file pidou.dat
    	at com/ms/security/permissions/FileIOPermission.check
    	at com/ms/security/PolicyEngine.deepCheck
    	at com/ms/security/PolicyEngine.checkPermission
    	at com/ms/security/StandardSecurityManager.chk
    	at com/ms/security/StandardSecurityManager.checkWrite
    	at java/io/FileOutputStream.<init>
    	at java/io/FileWriter.<init>
    	at Test.init
    	at com/ms/applet/AppletPanel.securedCall0
    	at com/ms/applet/AppletPanel.securedCall
    	at com/ms/applet/AppletPanel.processSentEvent
    	at com/ms/applet/AppletPanel.processSentEvent
    	at com/ms/applet/AppletPanel.run
    	at java/lang/Thread.run
    A+

  7. #7
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    Je viens de refaire la manip de A à Z pour essayer de retomber sur ton erreur.

    Voici le code Java que j\'utilise :

    Code:
    import java.applet.Applet;
    import java.io.FileWriter;
    
    /*
     * Created on 27 juin 2004
     *
     */
    public class Test extends Applet {
    
    	public void start() {
    		// Put your code here
    	}
    	public void init()  {
    
    			try {
    				FileWriter fos = new FileWriter(\"c:/pidou.dat\");
    				fos.write(\"Nom = pidou\",0,11);
    				fos.close();
    			} catch (Exception e) { System.out.println(\"Erreur = \"+e); }
    	 }
    }
    J\'ai modifié le chemin du fichier pour ne pas avoir a le chercher.

    Voici le code de la page HTML qui inclu l\'Applet signée :

    Code:
    <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
    <html>
      <head>
        <title>My applet \'Test\' starting page</title>
        
        <meta http-equiv=\"keywords\" content=\"keyword1,keyword2,keyword3\">
        <meta http-equiv=\"description\" content=\"this is my page\">
        
        <!--
        <link rel=\"stylesheet\" type=\"text/css\" href=\"./styles.css\">
        -->
      </head>
      
      <body>
        
        <applet codebase=\"./\" 
                code=\"Test.class\"
                archive=\"STest.jar\" 
                name=\"Test\" 
                width=\"320\" 
                height=\"240\">
          
          <!--
          <param name=\"p0\" value=\"\">
          <param name=\"p1\" value=\"\">
          -->
        
        </applet>
      </body>
    </html>
    Le sertificat, le jar nonsigné et le jar signé sont créés comme le sujet de la FAQ le preconise.

    Tous ce passe bien lors de l\'appel, demande d\'acceptation du sertificat puis ecriture du fichier sur la racine de C.

    lors d\'un essaie sans signer l\'applet le code erreur renvoyé est :

    Erreur = java.security.AccessControlException: access denied (java.io.FilePermission pidou.dat write)

    Ton problème est ailleurs que dans le code Java peut être dans le HTML (j\'en doute) ou alors dans une des phases de fabrication du Jar Signé.

  8. #8
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    Pour comparaison et test interne, tu peux telecharger les fichier .Html, .Jar, .Java et .class sous format zip ici

    Donne des nouvelles :wink:

  9. #9
    Membre MP
    Inscrit
    août 2013
    Messages
    10
    Je viens de telecharger tous vos fichiers et en lancant le fichier html, j\'obtiens les memes erreurs qu\'avec mes programmes.... Est-ce que cela pourrait venir d\'un probleme de configuration d\'internet explorer ? Ou peut etre de la version (j\'ai Internet Explorer 5) ?

  10. #10
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    Version 6.0 chez moi.

    c\'est possible en effet mais je suis incapable de dire quoi ou comment. (trop de possibilités et je ne les maîtrise pas toutes)

    Pour un appercu de ma config perso sous IE :







    Sur ce dernier screen, toutes les options faisant suite sont cochées.

    J\'ai effectué un test avec Mozilla Firefox pour voir si le navigateur avait une importance et tout a fonctionné normalement. (demande d\'acceptation du certificat et ecriture du fichier)

    Je pense que le problème lié au navigateur est a ecarter.

    Autre idée : Le problème ne serait il pas du côté des permisions d\'ecriture de l\'OS ? Faire un test d\'ecriture sur une zone du disque ou l\'on est sur d\'avoir des droits d\'ecriture en temps normal.

    Ce qui m\'etone dans l\'exception levée, c\'est qu\'elle est diferentes de celle que j\'ai posté qui elle est due a la non signature de l\'applet.

Page 1 sur 3 123 DernièreDernière

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé