Bonjour,
J'ai un ennui dans le développement d'un service web.
J'utilise un modèle objet avec héritage et généricité dans deux packages : DAOentities et BOentities.
Tous les objets BO héritent de BaseBO et encapsule un objet DAO suivant le schéma di dessous :
Package BOentities
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 public class BaseBO<T> { private T _objectDAO; public T getObjectDAO() { return _objectDAO; } public void setObjectDAO(T _objectDAO) { this._objectDAO = _objectDAO; } public BaseBO() { } }
Package DAOentities
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class BODeveloppeur extends BaseBO<Devellopeur> implements Serializable { /** * */ private static final long serialVersionUID = 5545457539432845163L; public BODeveloppeur() { } }
J'utilise une classe comme web service avec une méthode qui est censée me renvoyer un objet BO si l'on demande son id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public class Devellopeur implements java.io.Serializable { }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 @WebService public class ServicePersonnel { @WebMethod public BODeveloppeur GetDev(int id) { return BODeveloppeurManager.getInstance().recupererUn(id); } }
Je monte sans aucun problème mon webservice qui est accessible via le web service tester.
Lorque j'invoke la méthode j'ai une exception du type :
javax.xml.bind.JAXBException: class DAOentities.Devellopeur nor any of its super class is known to this context.]
Si je change la méthode de mon web service pour ne rappatrier que le nom sous forme de String de mon objet BO, tout fonctionne.
J'imagine que la sérialization ne marche pas bien pour mon objet BO.
En regardant le WSDL généré j'ai ceci :
Il me faudrait donc la marche à suivre pour faire comprendre l'héritage et la généricité à mon web service pour qu'il génére le bon WSDL et que mes objets BO soient récupérables.
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 <xs:complexType name= "boDeveloppeur"> <xs:complexContent> <xs:extension base="tns:baseBO"> <xs:sequence/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="baseBO"> <xs:sequence> <xs:element minOccurs="0" name="objectDAO" type="xs:anyType"/> </xs:sequence> </xs:complexType>
Toute aide serait la bienvenue, j'ai cherché à droite et à gauche mais étant novice j'ai énormément de mal.
Merci.
Partager