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:
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 ....
....
} |
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
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
Partager