jax-ws avec JBOSS 4.2 (pas de porttype dans le wsdl généré et erreur avec le client)
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:
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
| 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);
} |
une classe qui implémente le service EJBService dont voici le code:
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
| 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 créé les artefact client avec wsconsume.
j'ai importé les packages qu'il faut aussi bien pour le client que pour le serveur
voici ma classe de teste!
Code:
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));
}
} |
j'obtiens les erreurs suivantes:
Code:
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) |
Alors, si quelqu'un peut m'aider....Merciiiii
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.