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

JavaScript Discussion :

"La ressource demandée n'est pas disponible"


Sujet :

JavaScript

  1. #1
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut "La ressource demandée n'est pas disponible"
    Bonjour à tous,

    J'ai suivi ce tutorial afin de réaliser un service web RESTful avec NetBeans. Le service web marche correctement, mais j'ai un problème avec l'application web censée le consommer.

    Je poste sur ce forum et non sur celui consacré aux services web Java car j'ai l'impression que mon problème est lié à des fonctions JavaScript qui ne sexécutent pas, technologie que je n'ai jamais utilisée auparavant.

    L'application web comporte une page index.html :
    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
    28
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html>
        <head>
            <title>DeeJay - PlayList Community</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <link rel="stylesheet" href="./style.css" type="text/css"/>
     
            <!-- Add the location of the MusicDB remoting scripts generated earlier:-->
            <script type="text/javascript" src="../rest/Support.js"></script>
            <script type="text/javascript" src="../rest/musicdb/MusicDB.js"></script>
            <script type="text/javascript" src="../rest/musicdb/Playlists.js"></script>
            <script type="text/javascript" src="../rest/musicdb/Playlist.js"></script>
            <script type="text/javascript" src="../rest/musicdb/Songs.js"></script>
            <script type="text/javascript" src="../rest/musicdb/Song.js"></script>
            <script type="text/javascript" src="./main.js"></script>
        </head>
        <body>
            ...
                                       <td class="cell ht">
                                            <a href="javascript:showPlaylists()" class="links">
                                               <span class="text2">Playlists</span>
                                            </a>
                                       </td>
            ...
        </body>
    </html>
    Un fichier style.css et un répertoire images sont utilisés dans un répertoire music placé à côté de la page index.html.

    Un fichier main.js comporte plusieurs fonctions JavaScript dont la fonction ShowPlaylists() :
    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
    28
    29
    30
    var playlistsObj;
     
    function showPlayLists() {
        var app = new MusicDB();
        var resources = app.getResources();
        for(i=0;i<resources.length;i++) {
            var resource = resources[i];
            if(resource instanceof Playlists) {
                playlistsObj = resource;
                var style = 'otab';
                var str = '<div><table class="result"><tr>';
                str += '<td class="tab '+style+'"><a class="links" href="javascript:createPlayList()"><span class="text2">Create Playlist</span></a></td></tr></table></div>';    
                var playlists = playlistsObj.getItems();
                for(i=0;i<playlists.length;i++) {
                    var playlist = playlists[i];
                    var uri = playlist.getUri();
                    var playlistId = playlist.getPlaylistId();
                    var title = playlist.getTitle();
                    var desc = playlist.getDescription();
                    //alert(uri+' '+playlistId+' '+title+' '+desc);
                    str += "<div id='playListsTable'><a href=\"javascript:showPlayList("+i+")\" >"+title+"</a><br/>"+desc+"</div>";
                }
                var node = document.getElementById('vw_pl_content');
                node.innerHTML = str ;
                doShowContent('vw_pl');
            }
        }   
    }
     
    ...
    Enfin, un répertoire xspf contient un player XSPF MP3 et un répertoire songs contient plusieurs fichiers xspf de description de chansons de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8"?>
    <playlist version="0" xmlns = "http://xspf.org/ns/0/">
        <trackList>
          <track>
            <location>http://magnatune.com/all/07-Motorway-Nova%20Express.mp3</location>
            <image>http://he3.magnatune.com/artists/img/nova_express2.jpg</image>
            <annotation>Motorway</annotation>
          </track>
        </trackList>
    </playlist>
    Le problème intervient lorsque l'application web est lancée : aucune fonction JavaScript ne s'exécute ni sous IE5 ni sous Firefox 2.

    Sous IE5, lorsque je clique sur un bouton Playlists devant lancer la fonction showPlayLists(), le message "Erreur sur la page !" est affiché sur la barre de statut.

    Voici les erreurs que j'obtiens avec Firebug :
    GET http://localhost:8080/MusicApp/music...=1216633266545 404 Support.js (line 112)
    syntax error <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/... Playlists.js (line 38)
    showPlayLists is not defined
    Sous la première erreur, j'ai accès à un onglet Response qui contient le message suivant :
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict
    .dtd"><html><head><title>Sun Java System Application Server 9.1_02 - Rapport d'erreur</title><style type
    ="text/css"><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size
    :22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;
    } H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY
    {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial
    ,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background
    :white;color:black;font-size:12px;}A {color : black;}HR {color : #525D76;}--></style> </head><body><h1
    >État HTTP 404 - </h1><hr/><p><b>type</b> Rapport d'état</p><p><b>Message</b></p><p><b>Description</b
    >La ressource demandée () n'est pas disponible.</p><hr/><h3>Sun Java System Application Server 9.1_02
    </h3></body></html>
    Voici l'extrait du fichier Support.js qui se trouve dans un dossier rest généré par NetBeans comportant la ligne 112 (en gras) :
    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
        get : function(url, mime) {
            var xmlHttpReq = this.open('GET', url, mime, 0, false);
            xmlHttpReq.send(null);
            try {
              if (xmlHttpReq.readyState == 4) {
                  var rtext = xmlHttpReq.responseText;
                  if(rtext == undefined || rtext == '' || rtext.indexOf('HTTP Status') != -1) {
                      if(rtext != undefined)
                          this.debug('Failed XHR(GET, '+url+'): Server returned --> ' + rtext);
                      return '-1';
                  }
                  return rtext;           
               }
            } catch( e ) {
              this.debug('Caught Exception; name: [' + e.name + '] message: [' + e.message+']');
            }
            return '-1';
        },
    Voici l'extrait du fichier Playlists.js qui se trouve dans un dossier rest/musicdb comportant la ligne 38 (en gras) :
    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
       init : function() {
          var remote = new PlaylistsRemote(this.uri);
          var c = remote.getJson();
          if(c != -1) {
             var myObj = eval('('+c+')');
             var playlists = myObj.playlists;
             if(playlists == null || playlists == undefined) {
                rjsSupport.debug('playlists is undefined, so skipping init of Playlists');
                return;
             }
             var refs = playlists.playlistRef;
             if(refs != undefined) {
                 if(refs.length == undefined) {
                     this.initChild(refs, 0);
                 } else {
                     var j = 0;
                     for(j=0;j<refs.length;j++) {
                        var ref = refs[j];
                        this.initChild(ref, j);
                     }
                 }
             } else {
                rjsSupport.debug('playlistRef is undefined, so skipping initChild for Playlists');
             }
             this.initialized = true;
          }
       },
    Si vous avez une idée de pourquoi ça ne marche pas chez moi alors que c'est censé fonctionner chez la personne qui a écrit le tutorial, je suis bien entendu preneur...

    Merci à vous.

  2. #2
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    J'ai trouvé un zip contenant le code source correspondant à ce tutorial, mais l'exécution de l'application web est erronée de la même manière...

    PS : Voici le zip contenant le service.

    Serait-ce donc plutôt un problème de configuration de mon poste ?

  3. #3
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Bonjour,

    J'ai repéré une erreur de casse pour l'appel de la fonction showPlayLists dans le fichier index.html (deux fois en gras) :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html>
        <head>
            <title>DeeJay - PlayList Community</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <link rel="stylesheet" href="./style.css" type="text/css"/>
            
            <!-- Add the location of the MusicDB remoting scripts generated earlier:-->
            <script type="text/javascript" src="../rest/Support.js"></script>
            <script type="text/javascript" src="../rest/musicdb/MusicDB.js"></script>
            <script type="text/javascript" src="../rest/musicdb/Playlists.js"></script>
            <script type="text/javascript" src="../rest/musicdb/Playlist.js"></script>
            <script type="text/javascript" src="../rest/musicdb/Songs.js"></script>
            <script type="text/javascript" src="../rest/musicdb/Song.js"></script>
            <script type="text/javascript" src="./main.js"></script>
        </head>
        
        <body>
            <div class="outerBorder">
                <div class="border2">
                    <div class="header">
                        <!-- Add a banner for our application:-->
                        <div class="banner2"><img src="./images/b.gif" width="500" height="100"/></div>
                    </div> <!-- header -->
    
                    <!-- Add a menu to the left side of the page:-->
                    <div id="main" class="main">
                        <table>
                            <tr>
                                <td id="leftSidebar" class="leftSidebar bkgclr" class="valign-top">
                                    <br/>
                                    <span class="ml5">Welcome !</span>
                                    <br/>
                                    <br/>
                                    <table width="150">
                                        <tr>
                                            <td class="cell ht">
                                                <a href="javascript:showPlayLists()" class="links">
                                                    <span class="text2">PlayLists</span>
                                                </a>
                                            </td>
                                        </tr>
                                    </table>
                                </td>
                                <td class="seperator" class="valign-top"></td>
                                
                                <!-- Add three DIV tags, with the with id "vw_pl".
                                This is a hook to show all playlists. The id "vw_pl_item"
                                is a hook to show all songs in a playlist, while "cr_pl"
                                is not used in this tutorial. It is left for you
                                an excerise to user to create a playlist.-->
                                <td id="content" class="content  bkgclr" class="valign-top">
                                    <div id="vw_pl" class="hide">
                                        <div class="clr"></div>
                                        <div class="heading mglf">Playlists</div>
                                        <div id="vw_pl_content" class="form-container"></div>
                                    </div>
                                    <div id="cr_pl" class="hide">
                                        <div class="clr"></div>
                                        <div class="heading mglf">Create Playlist</div>
                                        <div id="cr_pl_content" class="form-container"></div>
                                    </div>
                                    <div id="vw_pl_item" class="hide">
                                        <div class="clr"></div>
                                        <div class="heading mglf">Playlists</div>
                                        <div id="vw_pl_item_content" class="form-container"></div>
                                        <br/><br/>
                                        <div id="add_song_content" class="form-container"></div>
                                    </div>
                                </td>
                            </tr>
                        </table>
                    </div> <!-- main -->
                </div> <!-- border2 -->
            </div> <!-- outerborder -->
    
             <!-- Finally we add a hook to invoke a javascript function
             "showPlaylists()":-->
            <script language="Javascript">showPlayLists();</script>
        </body>
    </html>
    Sinon, je m'aperçois que la fonction showPlayLists fait appel à une autre fonction createPlayList (en gras) qui n'existe nulle part dans le projet :
    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
    28
    var playlistsObj;
    
    function showPlayLists() {
        var app = new MusicDB();
        var resources = app.getResources();
        for(i=0;i<resources.length;i++) {
            var resource = resources[i];
            if(resource instanceof Playlists) {
                playlistsObj = resource;
                var style = 'otab';
                var str = '<div><table class="result"><tr>';
                str += '<td class="tab '+style+'"><a class="links" href="javascript:createPlayList()"><span class="text2">Create Playlist</span></a></td></tr></table></div>';    
                [I]var playlists = playlistsObj.getItems();
                for(i=0;i<playlists.length;i++) {
                    var playlist = playlists;
                    var uri = playlist.getUri();
                    var playlistId = playlist.getPlaylistId();
                    var title = playlist.getTitle();
                    var desc = playlist.getDescription();
                    //alert(uri+' '+playlistId+' '+title+' '+desc);
                    str += "<div id='playListsTable'><a href=\"javascript:showPlayList("+i+")\" >"+title+"</a><br/>"+desc+"</div>";
                }
                var node = document.getElementById('vw_pl_content');
                node.innerHTML = str ;
                doShowContent('vw_pl');
            }
        }
    }
    Enfin, un bouton "Create playlist" est correctement affiché si je commente le passage en italique ci-dessus, mais la fonction semble être avortée sinon (l'affichage du bouton n'intervient pas).

    Je recherche donc toujours une aide précieuse...

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <location>http://magnatune.com/all/07-Motorway-Nova%20Express.mp3</location>
    Si les fichiers que tu veux lire sont hors de ton domaine, tu ne pourras pas y accéder en javascript pour des raisons de sécurité.

  5. #5
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Ca ne change absolument rien...

    J'obtiens toujours une erreur 404 sur une URL du type http://localhost:8080/MusicApp/music...=1217492108685 suivie d'une erreur de syntaxe ici :
    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
        init : function() {
            var remote = new PlaylistsRemote(this.uri);
            var c = remote.getJson();
            if(c != -1) {
                var myObj = eval('('+c+')');
                var playlists = myObj.playlists;
                if(playlists == null || playlists == undefined) {
                    rjsSupport.debug('playlists is undefined, so skipping init of Playlists');
                    return;
                }
                var refs = playlists.playlistRef;
                if(refs != undefined) {
                    if(refs.length == undefined) {
                        this.initChild(refs, 0);
                    } else {
                        var j = 0;
                        for(j=0;j<refs.length;j++) {
                            var ref = refs[j];
                            this.initChild(ref, j);
                        }
                    }
                } else {
                    rjsSupport.debug('playlistRef is undefined, so skipping initChild for Playlists');
                }
                this.initialized = true;
            }
        },
    Et si je commente le bout de code ci-dessous, la fonction showPlayLists va plus loin et affiche un bouton qui appelle une fonction createPlayList référencée nulle part dans le projet :
    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
    function showPlayLists() {
        var app = new MusicDB();
        var resources = app.getResources();
        for(i=0;i<resources.length;i++) {
            var resource = resources[i];
            if(resource instanceof Playlists) {
                playlistsObj = resource;
                var style = 'otab';
                var str = '<div><table class="result"><tr>';
                str += '<td class="tab '+style+'"><a class="links" href="javascript:createPlayList()"><span class="text2">Create Playlist</span></a></td></tr></table></div>';
                [I]/*var playlists = playlistsObj.getItems();
                for(i=0;i<playlists.length;i++) {
                    var playlist = playlists;
                    var uri = playlist.getUri();
                    var playlistId = playlist.getPlaylistId();
                    var title = playlist.getTitle();
                    var desc = playlist.getDescription();
                    //alert(uri+' '+playlistId+' '+title+' '+desc);
                    str += "<div id='playListsTable'><a href=\"javascript:showPlayList("+i+")\" >"+title+"</a><br/>"+desc+"</div>";
                }*/
                var node = document.getElementById('vw_pl_content');
                node.innerHTML = test + str ;
                doShowContent('vw_pl');
            }
        }
    }

Discussions similaires

  1. La ressource demandée n'est pas disponible
    Par weed dans le forum Struts 1
    Réponses: 3
    Dernier message: 18/10/2008, 01h40
  2. ressource demande n'est pas disponible
    Par j_esti dans le forum Struts 1
    Réponses: 1
    Dernier message: 21/05/2008, 23h49
  3. [Tomcat 6.0] La ressource demandée n'est pas disponible
    Par Monkey_D.Luffy dans le forum JDBC
    Réponses: 14
    Dernier message: 20/05/2008, 15h41
  4. La ressource demandée n'est pas disponible.
    Par info_plus dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 03/04/2008, 17h49
  5. Erreur 404 - La ressource demandée (/**/) n'est pas disponible.
    Par Rom1984 dans le forum Tomcat et TomEE
    Réponses: 9
    Dernier message: 20/03/2008, 16h06

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