2 WebServices qui héritent de la même classe
Bonjour, :P
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:
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:
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:
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
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:
1 2 3 4 5
| @WebMethod
@WebResult
void affecterUos(final String nomProjet,
final PmoUniteOeuvreVO affectationVO, final int nbAffectations)
throws AccesRefuseException; |
et: Service Fobs:
Code:
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:
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:
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!!