@Override protected boolean handleInbound(SOAPMessageContext msgContext) { try { SOAPMessage soapMessage = msgContext.getMessage(); SOAPBody soapBody = soapMessage.getSOAPBody(); SOAPBodyElement soapBodyElement = (SOAPBodyElement) soapBody.getChildElements().next(); if (soapBodyElement.getChildElements().hasNext()) { SOAPElement payload = (SOAPElement) soapBodyElement.getChildElements().next(); String value = payload.getValue(); payload.setValue(value + "World"); } } catch (SOAPException e) { throw new WebServiceException(e); } return true; }
public static void main(String[] args) throws SOAPException { // Service helloService = new HelloService(); QName serviceName = new QName(targetNamespace, serName); QName portName = new QName(targetNamespace, pName); // Hello hello = helloService.getPortName(); javax.xml.ws.Service service = Service.create(serviceName); service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress); Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE); BindingProvider bp = (BindingProvider) dispatch; Map<String, Object> rc = bp.getRequestContext(); rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE); rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, OPER_NAME); MessageFactory factory = ((SOAPBinding) bp.getBinding()).getMessageFactory(); SOAPMessage request = factory.createMessage(); SOAPBody body = request.getSOAPBody(); QName payloadName = new QName(targetNamespace, OPER_NAME, "ns1"); SOAPBodyElement payload = body.addBodyElement(payloadName); SOAPElement message = payload.addChildElement(INPUT_NAME); message.addTextNode("x"); // String value = "<people>" + // "<name>TimLu</name>"+ // "<age>26</age>"+ // "</people>"; // message.setValue(value); SOAPMessage reply = null; try { reply = dispatch.invoke(request); } catch (WebServiceException wse) { wse.printStackTrace(); } SOAPBody soapBody = reply.getSOAPBody(); SOAPBodyElement nextSoapBodyElement = (SOAPBodyElement) soapBody.getChildElements().next(); SOAPElement soapElement = (SOAPElement) nextSoapBodyElement.getChildElements().next(); System.out.println("Return repsone value=" + soapElement.getValue()); }