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 :

probleme de mapping d'une servlet


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Par défaut probleme de mapping d'une servlet
    Bonjour,

    Je viens d'installer en test Mondrian et JfreeCharts sur mon serveur.
    J'avais d'abord fait une installation sur mon ordi perso et tout s'est très bien passé.
    Puis j'ai voulu en faire de même sur le serveur et là, problème !
    Les servlets qui se trouvent dans des .jar ne sont pas mappées correctement...
    Ceci ressemble à un problème de classpath mais je ne parviens pas à le régler.

    La requete http://cube.xxxx.com/Print?cube=01&type=0 exemple me revoie l'erreur :

    Not Found

    The requested URL /Print was not found on this server.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

    Le fichier de web.xml est un peu long, mais je vous le founis un peu plus loin.
    Si quelqu'un peut m'aider (ce n'est probablement pas grand chose vu que la meme appli avec la meme arborescence fonctionne chez moi, de plus, j'ai volontairement introduit des erreurs dans le web.xml et plus rien ne fonctionne, il est donc bien pris en compte).

    Merci par avance...

    le web.xml :

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
    $Id: //open/mondrian-release/3.1/demo/derby/web.xml#2 $
     
    This software is subject to the terms of the Eclipse Public License v1.0
    Agreement, available at the following URL:
    <a href="http://www.eclipse.org/legal/epl-v10.html" target="_blank">http://www.eclipse.org/legal/epl-v10.html</a>.
    (C) Copyright 2003-2005 Julian Hyde and others.
    All Rights Reserved.
    You must accept the terms of that agreement to use this software.
     
    This is the default mondrian.war web.xml customized to use a Derby FoodMart
    database which is exploded in the class path of the WAR.
     
    -->
    <!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
     
    <web-app>
     
      <display-name>Mondrian</display-name>
      <description/>
     
      <!-- optional? now in JPivot by default  -->
      <context-param>
        <param-name>contextFactory</param-name>
        <param-value>com.tonbeller.wcf.controller.RequestContextFactoryImpl</param-value>
      </context-param>
     
      <context-param>
        <param-name>connectString</param-name>
        <param-value>Provider=mondrian;Jdbc='jdbc:derby:classpath:/foodmart';Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=org.apache.derby.jdbc.EmbeddedDriver;JdbcUser=sa;JdbcPassword=sa;PoolNeeded=false;</param-value>
      </context-param>
     
      <filter>
        <filter-name>JPivotController</filter-name>
        <filter-class>com.tonbeller.wcf.controller.RequestFilter</filter-class>
        <init-param>
          <param-name>indexJSP</param-name>
          <param-value>/index.html</param-value>
          <description>forward to this page if session is new</description>
        </init-param>
        <init-param>
          <param-name>errorJSP</param-name>
          <param-value>/error.jsp</param-value>
          <description>URI of error page</description>
        </init-param>
        <init-param>
          <param-name>busyJSP</param-name>
          <param-value>/busy.jsp</param-value>
          <description>This page is displayed if a the user clicks
            on a query before the previous query has finished</description>
        </init-param>
        <!--
        <init-param>
          <param-name>forceExtension</param-name>
          <param-value>.faces</param-value>
          <description>replace .jsp with .faces</description>
        </init-param>
        -->
      </filter>
     
      <filter-mapping>
        <filter-name>JPivotController</filter-name>
        <url-pattern>/testpage.jsp</url-pattern>
      </filter-mapping>
     
      <listener>
        <listener-class>mondrian.web.taglib.Listener</listener-class>
      </listener>
     
      <!-- resources initializer -->
      <listener>
        <listener-class>com.tonbeller.tbutils.res.ResourcesFactoryContextListener</listener-class>
      </listener>
     
      <servlet>
        <servlet-name>MDXQueryServlet</servlet-name>
        <servlet-class>mondrian.web.servlet.MdxQueryServlet</servlet-class>
        <init-param>
          <param-name>connectString</param-name>
          <param-value>Provider=mondrian;Jdbc='jdbc:derby:classpath:/foodmart';Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=org.apache.derby.jdbc.EmbeddedDriver;JdbcUser=sa;JdbcPassword=sa;PoolNeeded=false;</param-value>
        </init-param>
      </servlet>
     
      <servlet>
        <servlet-name>MondrianXmlaServlet</servlet-name>
        <servlet-class>mondrian.xmla.impl.DefaultXmlaServlet</servlet-class>
      </servlet>
     
     
      <!-- jfreechart provided servlet -->
      <servlet>
        <servlet-name>DisplayChart</servlet-name>
        <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
      </servlet>
     
      <servlet>
        <servlet-name>GetChart</servlet-name>
        <display-name>GetChart</display-name>
        <description>Default configuration created for servlet.</description>
        <servlet-class>com.tonbeller.jpivot.chart.GetChart</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>Print</servlet-name>
        <display-name>Print</display-name>
        <description>Default configuration created for servlet.</description>
        <servlet-class>com.tonbeller.jpivot.print.PrintServlet</servlet-class>
      </servlet>
     
      <servlet-mapping>
        <servlet-name>DisplayChart</servlet-name>
        <url-pattern>/DisplayChart</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>Print</servlet-name>
        <url-pattern>/Print</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>GetChart</servlet-name>
        <url-pattern>/GetChart</url-pattern>
      </servlet-mapping>
     
      <servlet-mapping>
        <servlet-name>MDXQueryServlet</servlet-name>
        <url-pattern>/mdxquery</url-pattern>
      </servlet-mapping>
     
      <servlet-mapping>
        <servlet-name>MondrianXmlaServlet</servlet-name>
        <url-pattern>/xmla</url-pattern>
      </servlet-mapping>
     
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
      </welcome-file-list>
     
      <taglib>
        <taglib-uri>http://www.tonbeller.com/wcf</taglib-uri>
        <taglib-location>/WEB-INF/wcf/wcf-tags.tld</taglib-location>
      </taglib>
     
      <taglib>
        <taglib-uri>http://www.tonbeller.com/jpivot</taglib-uri>
        <taglib-location>/WEB-INF/jpivot/jpivot-tags.tld</taglib-location>
      </taglib>
     
    </web-app>

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    normalement, le mapping d'une webapp a la forme http://server/webappname/contenu

    Dans ton url il manque el webappname. Vérifie auprès du gestionnaire de ton serveur en production si il ne faut pas que tu mette ce webappname.

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Par défaut Merci...
    Merci pour cette réponse, mais ce n'est pas le cas ici.
    Il n'y a aucun problème, j'ai pu le tester par ailleurs, le webappname n'est pas indispensable car je fais ici appel, non pas directement à Tomcat mais à Apache qui lui va transférer à Tomcat (je suis sur le port par défaut, donc le port 80 et pas le port 8080).
    Les soucis ne se posent pas par exemple pour les servlets qui se trouvent dans le répertoire class, mais uniquement pour celles qui sont fournies via des .jar dans le répertoire lib.
    Une solution serait probablement de décompresser les .jar en question mais ceci me semble un peu stupide car c'est uniquement un problème de paramétrage...
    En fait, j'ai l'impression que la mapping dans le fichier web.xml, pour les archives .jar, ne se fait pas sur le bon répertoire lib, mais comment corriger ça ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    a moins qu'il y aie eu une bidouille dans la configuration de tomcat, il n'y a pas de raison que les jars dans le WEb-INF/lib soient traités différement des .class dans WEB-INF/classes. Je pencherais plutot pour un problème d'initialisation de la servlet dans ton cas. As-tu vérifié les logs de tomcat à la recherche de messages d'erreur liés au démarrage de la servlet? As-tu, au passage, essayé de remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      <servlet-mapping>
        <servlet-name>Print</servlet-name>
        <url-pattern>/Print</url-pattern>
      </servlet-mapping>

    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      <servlet-mapping>
        <servlet-name>Print</servlet-name>
        <url-pattern>/Print*</url-pattern>
      </servlet-mapping>
    En effet, dans le premier cas si apache fait la redirection en interne vers
    http://server/webappname/Print/?blablabla, tu risque de l'avoir dans le baba

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Par défaut Merci encore : problème résolu, mais la solution est tordue....
    Bravo en tous cas pour la pertinence des réponses, mais ça n'est pas exactement ça.

    J'ai fait un test avec http://new.kairn.com

    Si j'utilise
    <servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>pagesSite.SiteArticle</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>*
    ou
    <servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>pagesSite.SiteArticle</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/index.html</url-pattern>
    </servlet-mapping>

    Ca répond sans problème avec un appel sur la racine du serveur (vu que la future version du site sera en MVC2, je ne suis pas allé plus loin car je n'ai besoin que d'un point d'entrée, le reste sera fait par des URL Rewriting dans Apache).

    Par contre, si j'utilise :

    <servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>pagesSite.SiteArticle</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/test</url-pattern>
    </servlet-mapping>

    Je n'ai pas de réponse sur http://new.kairn.com/test

    Enfin, avec :


    <servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>pagesSite.SiteArticle</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/test.jsp</url-pattern>
    </servlet-mapping>

    Ca répond...

    Donc le problème ne concerne pas comme je le pensais uniquement les .jar, mais l'ensemble des fichiers.

    Il y a bien une bidouille au niveau d'apache qui ne considère que les fichiers avec une extension .jsp comme des servlets

    J'ai fait la même modif dans le web.xml de mon cube Mondrian, puis modifié les adresses pour ajouter .jsp : CA MARCHE !!!!!

    Merci pour ton aide, je n'avais pas pensé que CPANEL allait me faire une bidouille pareille !!!

    En fais, sur la racine, comme Apache ne trouvait pas de fichier index.html, index.php et autres extensions, il cherchait un index.jsp, et là il faisait appel à Tomcat qui allait lire le web.xml.
    Quand je métais index.html, il y a une réécriture d'URL dans apache et c'était réécrit en index.jsp, donc pas de soucis non plus.
    Dans les autres cas, le web.xml n'était pas lu, puisque c'est Apache qui répondait directement....

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    juste comme ca, est-ce que ce mapping fonctionnait?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>pagesSite.SiteArticle</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/test*</url-pattern>
    </servlet-mapping>

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

Discussions similaires

  1. Problem de connexion d'une servlet avec une base de données Postgres
    Par lhaj-boolean dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 01/02/2010, 09h39
  2. Réponses: 8
    Dernier message: 27/08/2008, 18h36
  3. probleme de mapping avec une bd oracle 9i
    Par j_esti dans le forum Hibernate
    Réponses: 1
    Dernier message: 13/05/2008, 11h05
  4. [JBoss][Eclipse & XDoclet] Problème au deploy d'une servlet
    Par zegreg dans le forum Wildfly/JBoss
    Réponses: 6
    Dernier message: 04/04/2006, 20h35
  5. [servlet] Problème d'accès d'une servlet à un serveur web
    Par nounjours dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 04/11/2005, 11h19

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