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 :

2 WebServices qui héritent de la même classe


Sujet :

Services Web Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut 2 WebServices qui héritent de la même classe
    Bonjour,
    problème java et web services
    Je travaille avec Eclipse et j'ai créé 2 web services dans le même projet.
    Voici l'interface de ces 2 web services:

    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
    package ws;
    import java.util.List;
    import javax.jws.WebMethod;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    import....
     
    /**
     * Définition du WebService
     */
    @WebService
    public interface IFob
    {
        /**
         * Donne toutes les fiches de type 1
         * @param nomProjet
         *            Nom du projet Nom du projet
         * @return Toutes les fiches visibles
         * @throws AccesRefuseException
         *             La personne n'a pas le droit d'accéder à la méthode
         */
        @WebMethod(operationName="listeToutesLesFobs")
        @WebResult
        List< FobVO > listeToutes(final String nomProjet)
            throws AccesRefuseException;
        @WebMethod ....
    ....
    }
    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
    package ws;
    import java.util.List;
    import javax.jws.WebMethod;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    import....
     
    /**
     * Définition du WebService
     */
    @WebService
    public interface IPmo
    {
        /**
         * Donne toutes les fiches de type 2
         * @param nomProjet
         *            Nom du projet Nom du projet
         * @return Toutes les fiches visibles
         * @throws AccesRefuseException
         *             La personne n'a pas le droit d'accéder à la méthode
         */
        @WebMethod(operationName="listeToutesLesPmos")
        @WebResult
        List< PmoVO > listeToutes(final String nomProjet)
            throws AccesRefuseException;
        @WebMethod ....
    ....
    }
    Les Classes Fob et Pmo qui implémentent ces 2 interfaces héritent toutes deux d'une classe abstraite appelée Fiche, contenant entre autres la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List< F > listeToutes(final String nomProjet){...}
    Cette méthode est donc partagée par les deux classes Fob et Pmo. (Fob et Pmo ne surchargent pas cette méthode.)

    J'ai donc créé 2 web services qui utilisent la même méthode dont le type de retour est générique.

    Je laisse JAX WS publier mes web services, d'abord pmos, puis fobs (dans cet ordre):
    <endpoint
    name='Pmos'
    implementation='Pmo'
    url-pattern='/services/Pmos.Service'
    enable-mtom="true" />
    <endpoint
    name='Fobs'
    implementation='Fob'
    url-pattern='/services/Fobs.Service'
    enable-mtom="true" />

    Le lancement du serveur ne génère aucun problème. Mais quand je regarde le xsd relatif au service Fobs, je vois:

    <xs:element name="listeToutesLesFobs" nillable="true" type="tns:listeToutesLesPmos"/>
    <xs:element name="listeToutesLesFobsResponse" nillable="true" type="tns:listeToutesLesPmosResponse"/> **


    <xs:element name="listeToutesLesPmos" type="tns:listeToutesLesPmos"/>
    <xs:element name="listeToutesLesPmosResponse" type="tns:listeToutesLesPmosResponse"/> ****


    alors que celui du services Pmos est correct:

    <xs:element name="listeToutesLesPmos" type="tns:listeToutesLesPmos"/>
    <xs:element name="listeToutesLesPmosResponse" type="tns:listeToutesLesPmosResponse"/>


    ** pourquoi name et type ne correspondent-ils pas?

    **** pourquoi JAX WS créé-t-il l'élément listeToutesLesPmos ?

    Une même méthode implémentée utilisée par 2 web services pose-t-elle des problèmes à JAXWS?

    Quelqu'un a-t-il une idée?

    Gilles

  2. #2
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    tu as essayer de nomer tes webresult

    @WebResult(name="listeToutesLesPmosReturn")

    et

    @WebResult(name="listeToutesLesFobsReturn")

    je mets Return car je crois qu'il y a un probleme si tu mets Response

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut HELP !! 2 web services publient une méthode de même nom
    Bonjour,
    j'ai essayé de mettre
    @WebResult(name="listeToutesLesPmosReturn") mais c'est bien Response qui est demandé.

    Mon problème semble venir du fait que mes 2 web services définissent des méthodes de même nom (juste le nom, pas les paramètres)
    Ex: Service Pmos:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @WebMethod
    @WebResult
    void affecterUos(final String nomProjet,
            final PmoUniteOeuvreVO affectationVO, final int nbAffectations)
            throws AccesRefuseException;
    et: Service Fobs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @WebMethod
    @WebResult
    void affecterUos(final String nomProjet,
            final FobUniteOeuvreVO affectationVO, final int nbAffectations)
            throws AccesRefuseException;
    Jax WS publie ça:

    Service Pmos:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xs:complexType name="affecterUos">
    <xs:sequence>
    <xs:element name="arg0" type="xs:string" minOccurs="0"/>
    <xs:element name="arg1" type="tns:pmoUniteOeuvreVO" minOccurs="0"/>
    <xs:element name="arg2" type="xs:int"/>
    </xs:sequence>
    </xs:complexType>
    Service Fobs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xs:complexType name="affecterUos">
    <xs:sequence>
    <xs:element name="arg0" type="xs:string" minOccurs="0"/>
    <xs:element name="arg1" type="tns:pmoUniteOeuvreVO" minOccurs="0"/>
    <xs:element name="arg2" type="xs:int"/>
    </xs:sequence>
    </xs:complexType>

    Je rappelle que l'ordre de publication des services est le suivant: Pmos, puis Fobs

    Quelqu'un a-t-il une solution?? Existe-t-il des annotations permettant de gérer cela?

    HELP!!

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Re,
    j'ai trouvé une solution propre à ce problème.
    Il suffit de mettre les annotation: RequestWrapper et ResponseWrapper devant toutes les méthodes exposées. Le nom mis dans l'attribut operationName doit lui être UNIQUE parmi toutes les méthodes exposées par tous les web services.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package com.ws;
    import ...
    @WebService
    public interface Fobs
    {
    @WebMethod(operationName="listeToutesLesFobs")
    @RequestWrapper(className="com.ws.listeToutesLesFobs")
    @ResponseWrapper(className="com.ws.listeToutesLesFobsResponse") 
        List< FobVO > listeToutes(final String nomProjet)
            throws AccesRefuseException;
    ...
    }
    https://jira.jboss.org/jira/browse/JBWS-1799

    Voilà,

Discussions similaires

  1. Réponses: 9
    Dernier message: 28/12/2011, 12h16
  2. Réponses: 5
    Dernier message: 28/05/2008, 16h18
  3. [Eclipse 2.1] des fichiers qui sautent dans WEB-INF/classes
    Par iubito dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/10/2004, 16h07
  4. [Applet]Utiliser plusieurs Applet dans une même classe
    Par BRAUKRIS dans le forum Applets
    Réponses: 5
    Dernier message: 11/06/2004, 15h27
  5. Que deux événements qui se passent en même temps.
    Par Melchisedec dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 03/08/2003, 14h24

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