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

Services Web Java Discussion :

deux servlet qui pointent sur le meme package et le meme webservice mais différente méthode


Sujet :

Services Web Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 7
    Points
    7
    Par défaut deux servlet qui pointent sur le meme package et le meme webservice mais différente méthode
    Bonjour,

    je voudrais rajouter une servlet dans mon fichier web.xml pour qu'elle accèdent au meme package et la meme classe, mais font appelle à différente méthodes, mais je n'arrive pas à le faire avec la 2 eme.

    Voici mon bloc 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
    <!-- old servlet-->
     
    <servlet>
        <servlet-name>api</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-config/api-r-servlet.xml</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>
     
    <servlet-mapping>
        <servlet-name>api</servlet-name>
        <url-pattern>/sitesApi/*</url-pattern>
    </servlet-mapping>
     
    <!-- my secod servmet V2  -->
    <servlet>
        <servlet-name>webservice</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-config/api-web-servlet.xml</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>
     
    <servlet-mapping>
        <servlet-name>webservice</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
    et pour les deux fichier XML api-web-servlet.xml et api-r-servlet.xml j'ai le contenu suivant :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <beans   xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
        > 
    <context:annotation-config/>
    <context:component-scan base-package="com.me.project.rest.api" />
    <mvc:annotation-driven />      
    </beans>
    Voila les deux méthodes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @RequestMapping(value = "/v2/mySite", method = RequestMethod.GET)
    public @ResponseBody
    Object  SitesV2( @RequestParam(value = "ajouterstatus", required = false) Integer ajouterstatus,
            @RequestParam(value = "monadresse", required = false) String monadresseHttpServletRequest request, HttpServletResponse responseHttp{ 
     
     try {
            appname = request.getHeaders( "Name" ).nextElement().toString();
        } catch ( Exception e ) {
            return new Result( "", ": AppName is Empty" );
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @RequestMapping(value = "/v1/mySite", method = RequestMethod.GET)
    public @ResponseBody
    Object  SitesV1( @RequestParam(value = "ajouterstatus", required = false) Integer ajouterstatus,
            @RequestParam(value = "monadresse", required = false) String monadresseHttpServletRequest request, HttpServletResponse responseHttp{ 
     
     try {
            appname = request.getHeaders( "Name" ).nextElement().toString();
        } catch ( Exception e ) {
            return new Result( "", ": AppName is Empty" );
        }
    Alors avec la premiere servlet pour tester mon webservice avec SOAPui j'utilise url suivante:
    https://www.developpez.net/forums/localhost:8080/sitesApi/v1/mysite?id=1&fields=site.namej'aurai le resultat que j'attende et pareil avec cette URL aussi : localhost:8080/sitesApi/v2/mysite?id=1&fields=site.name MAIS avec l'url suivante j'aurai pas ce que je cherche : https://www.developpez.net/forums/localhost:8080/api/v1/mysite?id=1&fields=site.name et pareil avec https://www.developpez.net/forums/localhost:8080/api/v2/mysite?id=1&fields=site.name

    Sachant que les deux méthode sont copie coller et ça marche avec la premiere servlet sitesApi et non pas avec api

    Merci pour vos réponse

  2. #2
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    Salut,
    Tu dois déclarer qu'une seule fois le dispatcher (tu as le même fichier avec le même package scanné)... ce que tu veux c'est plusieurs url-pattern?
    Ton api a-t-elle des routes non gérées par spring?

    Je pense que tu peux faire quelque chose de la sorte
    1. Mapper ton dispatcher sur le /*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <servlet>
        <servlet-name>api</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-config/api-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
     
    <servlet-mapping>
        <servlet-name>api</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    2. créer 1 controller @RestController
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    @RestController
    @RequestMapping(value={"/api","/webservices"})
    class ApiController{
          @RequestMapping(value = {"/v2/mySite","/v1/mySite"}, method = RequestMethod.GET)
          public @ResponseBody
          Object  SitesV2( @RequestParam(value = "ajouterstatus", required = false) Integer ajouterstatus,
            @RequestParam(value = "monadresse", required = false) String monadresseHttpServletRequest request, HttpServletResponse responseHttp{ 
           //...
           } 
     
    //...
    attention les noms de méthodes ne prennent pas de majuscules, tu peux aussi te poser la question de pourquoi une v2 qui fait la même chose qu'une v1? quand la v2 sera vraiment différente il te faudra défaire ce mapping?

    En espérant t'aider...
    ++
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

Discussions similaires

  1. Deux URL qui pointe sur le meme repertoire
    Par proxichou dans le forum Apache
    Réponses: 3
    Dernier message: 05/08/2011, 00h05
  2. Réponses: 5
    Dernier message: 04/08/2010, 10h20
  3. 2 noms de domaine qui pointent sur le même site
    Par kurgan71 dans le forum ASP
    Réponses: 4
    Dernier message: 16/04/2007, 09h56
  4. [debutant] 2 shemas qui pointent sur la meme table
    Par pmartin8 dans le forum Oracle
    Réponses: 1
    Dernier message: 16/05/2006, 20h33
  5. VBA,Graphiques :Series qui pointent sur des Range Discontinu
    Par CCHEVALIER dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/09/2005, 14h05

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