Bonjour tout le monde,
Voilà, ça fait quelque temps que je me suis mis à jax-ws.
J'utilise jboss-4.2.1.GA, JAVA_HOME<=jdk1.6, eclipse WTP 3.2.
J'ai créé une interface IEJBService dont voici le code:
une classe qui implémente le service EJBService dont voici le code:
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 package pack_serveur; import javax.ejb.Remote; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; // indique à jboss qu'il doit créer un lien de type remote avec cette interface d'ejb @Remote @WebService(name="calculetteWS") public interface IEJBService { @WebMethod(operationName="sommer") public int sommer(@WebParam(name="a") int a,@WebParam(name="b") int b); @WebMethod(operationName="soustraire") public int soustraire(@WebParam(name="a") int a,@WebParam(name="b") int b); @WebMethod(operationName="multiplier") public int multiplier(@WebParam(name="a") int a,@WebParam(name="b") int b); }
j'ai créé les artefact client avec wsconsume.
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 package pack_serveur; import javax.ejb.Stateless; import javax.jws.WebService; //indication de l'ejb session sans état @Stateless //indication de l'interface (endpoint) @WebService(endpointInterface="pack_serveur.IEJBService",serviceName="calculetteS") public class EJBService implements IEJBService { public int multiplier(int a, int b) { return a*b; } public int sommer(int a, int b) { return a+b; } public int soustraire(int a, int b) { return a-b; } }
j'ai importé les packages qu'il faut aussi bien pour le client que pour le serveur
voici ma classe de teste!
j'obtiens les erreurs suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 package pack_client; public class teste_client { public static void main(String[] args) { CalculetteS service=new CalculetteS(); CalculetteWS calc=service.getEJBServicePort(); System.out.println(calc.sommer(4, 3)); } }
Alors, si quelqu'un peut m'aider....Merciiiii
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 Exception in thread "main" javax.xml.ws.WebServiceException: java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage at org.jboss.ws.core.jaxws.client.ClientImpl.handleRemoteException(ClientImpl.java:304) at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:242) at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:164) at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:150) at $Proxy15.sommer(Unknown Source) at pack_client.teste_client.main(teste_client.java:12) Caused by: java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage at javax.xml.soap.SOAPMessage.setProperty(Unknown Source) at org.jboss.ws.core.soap.SOAPMessageImpl.<init>(SOAPMessageImpl.java:67) at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:155) at org.jboss.ws.core.CommonSOAP11Binding.createMessage(CommonSOAP11Binding.java:58) at org.jboss.ws.core.CommonSOAPBinding.bindRequestMessage(CommonSOAPBinding.java:153) at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:274) at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:230)
Une indication:
théoriquement, le wsdl devrait contenir la balise porttype...dans le mien (généré automatiquement par jboss lors de son démarrage), il n'y a pas de cette balise...Je ne sais pas ce que ca veut dire.
En plus, en essayant de faire un client DotNet, j'était décu de voir que les services receuilli à partir du wsdl avaient des paramètres et types de retour bizarre (genre un objet de type sommerReponse en paramètre et en retour du service sommer)....
Bref, je galère.
Merci de m'aider.
Partager