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

Développement Web en Java Discussion :

Créer des liens vers fichiers locaux


Sujet :

Développement Web en Java

  1. #1
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut Créer des liens vers fichiers locaux
    Bonjour à tous.

    J'ai besoin de créer dans une application web, des liens vers des fichiers externes. Je désire à partir du site, pouvoir ouvrir certains fichiers (type .mdb) qui se trouvent en local (pas exactement local, sur un serveur en fait mais soit..).
    je sais, ce n'est pas facile car niveau sécurité... mais c'est malgré tout ce qu'il est nécessaire de faire.


    J'ai testé plusieurs choses mais sans succès.
    La façon la plus proche était de faire un lien vers un fichier bat sur le serveur qui donnait les instructions pour ouvrir le fichier local. Le soucis c'est que le navigateur propose d'ouvrir ou enregistrer, nous cherchons à ce qu'il s'ouvre directement.

    J'ai testé en version client lourd (swing) et là il n'y a aucun problème pour effectuer un lien direct vers un fichier local.

    Est-ce possible via J2EE ou même en utilisant une applet ?

    Merci d'avance.

  2. #2
    Membre régulier Avatar de VinceFromBcn
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 122
    Points
    122
    Par défaut
    Bonjour,

    Ton serveur "local" est il accessible en FTP ?

  3. #3
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Négatif

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Si tu as une solution client lourd, tu peux peut-être envisager la version applet signée.

    Il serait bien de préciser un peu le besoin parce qu'en ce qui me concerne, la notion de "local" n'est pas très claire...
    Local par rapport à quoi ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Si tu as une solution client lourd, tu peux peut-être envisager la version applet signée.

    Il serait bien de préciser un peu le besoin parce qu'en ce qui me concerne, la notion de "local" n'est pas très claire...
    Local par rapport à quoi ?
    par rapport à l'ordi du client.
    Je pense me tourner en effet vers une applet, j'ai testé mais j'ai un petit Unsupported major.minor version 50.0, je résous et vous reviens.

    Merci pour votre aide.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Oui, n'oublie pas que tous les postes clients n'ont pas forcément la dernière version du JRE (la cause de ton erreur), compile avec la version la plus basse possible en rapport avec tes besoins.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Bonjour,

    Et bien c'est un intranet, tout le monde est supposé avoir la même version.
    J'ai voulu compiler en java 1.4 mais il faut que je trouve une alternative à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Desktop desk = Desktop.getDesktop();
    				try {
    					desk.open(new File("c:\\temp\\mymdb.mdb"));
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    Possible en 1.4 ?

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je crois que la classe Desktop est apparue avec la version 1.5.
    En 1.4, il faudrait utiliser Runtime.getRuntime().exec(...) mais ça supposerait que le programme à appeler soit installer systématiquement au même endroit, ou que le chemin soit paramétrable dans l'application en fonction de l'utilisateur, ce qui est très mauvais à mon avis...

    Quel est le navigateur qui pose problème ?
    Ou s'agit-il d'un poste qui n'a pas un JRE 1.6 ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Première fois que je tente d'utiliser des applets :$

    Et bien tous les postes clients ont java 1.6, je ne sais pas pourquoi j'ai eu une major minor version 50.. Mais bon, ici j'ai tenté en 1.4 .
    Le fichier .mdb en pratique se trouve sur un drive réseau commun à tous les postes donc de ce point de vue, ça ne pose pas de problème.
    Par contre quand j'exécute ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    				try {
    					JOptionPane.showMessageDialog(null,"HELLO1");
    					Runtime.getRuntime().exec("c:\\temp\\myDB.mdb");
    					JOptionPane.showMessageDialog(null,"HELLO2");
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    					JOptionPane.showMessageDialog(null,"HELLO3");
    				}
    J'ai bien le HELLO1 mais pas le 2 et pas le 3 non plus.
    Dès qu'il rencontre la commande exec de runtime, plus rien ne se passe.

    Une autre question.
    Apparement, via le fichier html qui appelle l'applet, je ne sais pas accéder au répertoire WEB-INF. Je dois donc m'amuser à copier le fichier .class de mon applet dans les reps où se trouvent mes fichiers html. Est-ce normal ?

    Merci d'avance.

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Non, il n'y a pas besoin de copier l'applet, par contre, comme elle accède à un fichier dépendant du poste, elle doit être signée.
    Une autre chose, il faut référencer l'application qui va ouvrir le fichier, du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Runtime.getRuntime().exec("c:/unPath/monApplicationQuiLitMDB.exe c:/unAutrePath/monFichier.mdb");
    A savoir que si tu as des blancs dans les noms de répertoire, ça risque de merdouiller, mieux vaut utiliser les noms courts ou passer par un String[].
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Non, il n'y a pas besoin de copier l'applet
    C'est la seule façon où mon html retrouve ma classe.

    Alors j'ai tout tenté, effectivement, je passe par un String[], mais rien ne réagit
    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
     
    try {
    					String url="c:\\temp\\jm_gdc.mdb";
    					JOptionPane.showMessageDialog(null,"HELLO1");
    					//Runtime.getRuntime().exec("c:\\temp\\myMDB.mdb");
    					Runtime runtime = Runtime.getRuntime(); 
    					Process process = null; 
    					process = runtime.exec(new String[] {"cmd.exe", "/c", "c:\\temp\\myMDB.mdb"}); 
    					//process = runtime.exec(new String[] {"cmd.exe","/c", " C:\\Program Files\\Microsoft Office\\OFFICE11\\MSACCESS.EXE /cmd "+ url + " TEST"});
    					JOptionPane.showMessageDialog(null,"HELLO2");
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    					JOptionPane.showMessageDialog(null,"HELLO3");
    				}

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    J'ai fait un test avec word, ça fonctionne (mais il faut obligatoirement signer le jar)
    La classe
    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
    21
    22
    23
    24
    25
    26
    27
     
    public class TestApplet extends Applet
    {
        private static final long serialVersionUID = 1;
     
        @Override
        public void start()
        {
            super.start();
            execute();
        }
     
        public void execute()
        {
            String[] cmd = new String[1];
     
            try
            {
                cmd[0] = "c:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE \"c:\\Temp\\test.doc\"";
                Runtime.getRuntime().exec(cmd);
            }
            catch (Exception e)
            {
                System.out.println(e.toString());
            }
        }
    }
    La page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <html>
    <applet code="test.TestApplet.class" archive="test_signe.jar">
    </applet>
    </html>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Rien ne se passe chez moi lorsque l'applet est exécutée.
    Mais je dois dire que je n'ai pas utilisé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     archive="test_signe.jar"
    Que contient votre .jar ?
    Je vais me documenter un peu sur la signature, voir si c'est le problème..

  14. #14
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est le problème, ne cherche pas...

    Pour information, lorsqu'une applet a besoin d'accéder aux ressources locales (ce qui est le cas ici), le jar doit être signé.
    Ceci permet à la jvm d'autoriser l'accès à l'applet (après accord demandé et reçu)

    Pour signer le jar, regarde ceci.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Alors, un grand MERCI !
    J'ai effectivement dû signer mon jar.
    J'arrive maintenant à lancer les applications access sans soucis..

    J'en ai appris, merci pour le suivi

    Bonne journée.

  16. #16
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je t'en prie...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Petite question..
    Je ne sais aps si je dois continuer ici ou s'il fallait ouvrir un autre post ..

    Mon applet utilise différentes classes, j'ai donc du compiler ces classes, les mettre dans un .jar etc, jusque là tout va bien, ça fonctionne.
    Je tente de me connecter à une db oracle (10g) à partir de l'applet, j'ai joint la librairie nécessaire, mais lors de l'exécution j'ai un joli :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    access denied (java.util.PropertyPermission oracle.jdbc.TcpNoDelay read)
    D'après ce que j'ai lu, si l'applet est signée, ça ne devrait pas poser de problème pourtant, si ?

    edit: j'ai du compléter donc le fichier java.policy avec quelques lignes, jusqu'à inclure la permission de se connecter à l'ip du serveur..
    ça ne me parait pas très pratique/portable.

    N'y a-t-il pas d'alternative?

  18. #18
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Nevermind, je me suis rendu compte qu'il fallait également signer les librairies auxquelles le jar accède.
    Je suis quand même étonné de voir tout ce qu'on peut faire une fois que le client accepte un certificat ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. créer un lien vers un fichier pdf
    Par pcappell dans le forum WinDev
    Réponses: 5
    Dernier message: 22/05/2007, 14h47
  2. [ETAT]Créer des liens vers des entetes de groupes
    Par tonyice80 dans le forum IHM
    Réponses: 7
    Dernier message: 06/04/2007, 23h37
  3. [VBA Word] Créer un lien vers une zone d'un fichier Excel
    Par hirochirak dans le forum VBA Word
    Réponses: 7
    Dernier message: 19/12/2006, 12h26
  4. Créer un lien vers un fichier existant
    Par Esarah dans le forum Langage
    Réponses: 4
    Dernier message: 13/11/2006, 22h33
  5. Créer des renvois vers un fichier texte
    Par OUaOU dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 20/10/2006, 13h37

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