Bonjour,
Mon titre est mauvais, mais faut bien en trouver un...
J'ai des EJB3 annotés pour en faire des WS. JBoss 4.2 me génère la WSDL, XFire 1.2.6 me génère le code client.
Voici mon EJB3 :
L'appel se fait correctement, la méthode s'exécute bien côté serveur et renvoie bien l'objet souhaité.
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 @WebService(targetNamespace = WSConstants.TARGET_NAMESPACE) @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) public interface IdentificationManager { /** * Connecte un User * @param email * @param pwd * @param initializeUser * @return le User connecté * @throws LoginException Si la connexion a échouée */ @WebMethod @WebResult(targetNamespace=WSConstants.TARGET_NAMESPACE) public User login( @WebParam(name="email", targetNamespace = WSConstants.TARGET_NAMESPACE) String email, @WebParam(name="pwd", targetNamespace = WSConstants.TARGET_NAMESPACE) String pwd, @WebParam(name="initializeUser", targetNamespace = WSConstants.TARGET_NAMESPACE) boolean initializeUser) throws ServerException;
Mais côté client, je ne récupère pas l'objet souhaité.
Si je fais l'appel suivant :Je récupère un objet User (du type généré par XFire), qui n'est pas null, mais dont tous les attributs eux le sont!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Service serviceModel = new AnnotationServiceFactory().create(IdentificationManager.class); IdentificationManager identification = (IdentificationManager)new XFireProxyFactory().create(serviceModel, "http://127.0.0.1:8091/xxxx/IdentificationManagerBean?wsdl"); user = identification.login(customer.getEmail(), customer.getPassword(), true);
Et là, j'y vois rien. Encore l'objet serait null, mais là...
J'ai tenté de faire l'appel autrement :Et là, j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 IdentificationManager identification = new IdentificationManagerBeanServiceClient().getIdentificationManagerBeanPort(); user = identification.login(customer.getEmail(), customer.getPassword(), true);J'avais déjà eu cette erreur auparavant, c'est pour ça que j'avais changé ma façon de faire l'appel (je n'avais pas trouvé mieux). Mais là, je me dis que le problème est peut-être le même : mon type User n'est pas connu du contexte, donc il ne me l'initialise pas avec les données qu'il reçoit.... ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part javax.xml.bind.JAXBException: com.travelsocial.ws.model.User is not known to this context
Merci de votre aide.
JM
Partager