Passage paramètres WebService
Bonjour,
Appel d'un WS en Java à partir d'une autre appli. En mode debug j'accède bel et bien à l'implémentation du service ciblé MAIS... mes paramètres sont tous NULL.
Du coup pourriez vous m'indiquer dans le code suivant ce qui pose problème svp ? J'ai beau chercher, rien n'y fait !
Interface WS :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @WebService(
portName = "MonPort",
serviceName = "MonService",
targetNamespace = "http://monsite.com/wsdl",
endpointInterface = "monEndPointInterace")
@SOAPBinding(style=Style.RPC)
public interface MonWs {
@WebMethod(operationName="blablaMethode")
public int blablaMethode(@WebParam(name="codeA") String acti,
@WebParam(name="codeD") String dep,
@WebParam(name="annee") Short an,
@WebParam(name="numOP") Long numOp,
@WebParam(name="nom") String nom);
} |
Implementation WS
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| @WebService(
portName = "MonPort",
serviceName = "MonService",
targetNamespace = "http://monsite.com/wsdl",
endpointInterface = "monEndPointInterace")
public class MonWsImpl implements MonWs {
@EJB
MonMetierService metierService;
public int blablaMethode(String acti, String dep, Short an,
Long numOp, String nom) {
// Appel du service Metier
} |
Appel à partir d'une autre application
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
public void machinTruc(String codeA, String codeD, Short annee, Long numOp) {
try {
// Récupération des noms de service et de port
QName serviceQN = new QName("http://monsite.com/wsdl", "MonService");
QName portQN = new QName("http://monsite.com/wsdl", "MonPort");
// Création du service
Service service = Service.create(serviceQN);
service.addPort(portQN, SOAPBinding.SOAP11HTTP_BINDING, "http://localhost:8080/MonAppliCible/MonService");
// Création d'une instance Dispatch
Dispatch<SOAPMessage> dispatch = service.createDispatch(portQN, SOAPMessage.class, Service.Mode.MESSAGE);
// Composition du message de demande
MessageFactory mf;
mf = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
// Créer un message. Cet exemple fonctionne avec l'élément SOAPPART.
SOAPMessage request = mf.createMessage();
SOAPPart part = request.getSOAPPart();
// Obtenir l'élément SOAPEnvelope ainsi que l'en-tête et les éléments de corps.
SOAPEnvelope env = part.getEnvelope();
SOAPBody body = env.getBody();
// Construire la charge de message.
SOAPElement operation = body.addChildElement("blablaMethode", null, "http://monsite.com/wsdl");
SOAPElement valActivite = operation.addChildElement("codeA");
valActivite.addTextNode(codeA);
SOAPElement valDepot = operation.addChildElement("codeD");
valDepot.addTextNode(codeD);
SOAPElement valAnnee = operation.addChildElement("annee");
valAnnee.addTextNode(String.valueOf(annee));
SOAPElement valOdp = operation.addChildElement("numOp");
valOdp.addTextNode(String.valueOf(numOp));
request.saveChanges();
// Appel du WS avec les paramètres
SOAPMessage response = dispatch.invoke(request);
} catch (SOAPException e) {
// Gestion exception
}
} |