How to read SOAP Header information from request and add it to response in spring web services

前端 未结 3 1287
滥情空心
滥情空心 2020-12-30 14:59

I am working on spring web services. I need to add some custom elements in the request and response message.which should look like this:



        
3条回答
  •  不思量自难忘°
    2020-12-30 15:15

    Finally i succeeded in reading the soap header from request and append into response. This is how my end point method looks like now:

     @PayloadRoot(localPart = REQUEST_LOCAL_NAME, namespace = NAMESPACE_URI)
        @ResponsePayload
        public GetOrderNumberResponse processOrderNumberRequest(
                @RequestPayload GetOrderNumberRequest request,
                MessageContext messageContext) throws Exception {
            logger.info("Request Received");
            // read SOAP Header from request and append in response
            SaajSoapMessage soapRequest = (SaajSoapMessage) messageContext
                    .getRequest();
            SoapHeader reqheader = soapRequest.getSoapHeader();
            SaajSoapMessage soapResponse = (SaajSoapMessage) messageContext
                    .getResponse();
            SoapHeader respheader = soapResponse.getSoapHeader();
            TransformerFactory transformerFactory = TransformerFactory
                    .newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            Iterator itr = reqheader.examineAllHeaderElements();
            while (itr.hasNext()) {
                SoapHeaderElement ele = itr.next();
                transformer.transform(ele.getSource(), respheader.getResult());
            }
            // process the request PayLoad
            GetOrderNumberResponse response = null;
            try {
                response = getOrderNumberService.executeRequest(request);
            } catch (CannotCreateTransactionException e) {
                logger.error(ErrorConstants.ERROR_E17);
                throw new ServiceException(ErrorConstants.ERROR_E17);
            }
            logger.info("Response Sent");
            return response;
        }
    

提交回复
热议问题