2016-07-13 12 views
1

spring-ws 응용 프로그램의 soap 요청에서 soap body를 추출하려고합니다. 내 비누 요청 나는 다음과 같은 코드를 사용하여 비누 몸을 추출하려고Spring-WS : Soap Message Body를 추출하는 방법

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org /soap/envelope/" xmlns:sch="http://www.manager.cts.com/schema"> 
<soapenv:Header/> 
    <soapenv:Body> 
    <sch:addManagerRequest> 
     <sch:name>shivani</sch:name> 
     <sch:salary>1231231</sch:salary> 
     <sch:developer> 
      <sch:firstName>asd</sch:firstName> 
      <sch:lastName>asdasd</sch:lastName> 
      <sch:salary>123123</sch:salary> 
     </sch:developer> 
    </sch:addManagerRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

입니다 :

@Override 
public boolean handleRequest(MessageContext messageContext, Object endpoint) throws Exception { 
    SoapMessage message = (SoapMessage) messageContext.getRequest(); 
    SoapBody soapBody = message.getSoapBody(); 

    Source bodySource = soapBody.getSource(); 
    DOMSource bodyDomSource = (DOMSource) bodySource; 

    Node bodyNode = bodyDomSource.getNode(); 
    System.out.println(bodyNode.getNodeValue()); 
    System.out.println(bodyNode.getChildNodes()); 
} 

출력은 다음과 같습니다

null 
[soapenv:Body: null] 

내가이 문제를 해결 도와주세요. 나는 봄에 익숙하지 않다.

답변

2

가장 좋은 해결책은 Jaxb unmarshal() 메서드를 사용하는 것이다. 자바 매핑 파일 파일은 적절한 주석이 있어야합니다 - 예 :

@XmlRootElement(name = "name_of_request") 
public class Request { 

    @XmlElement(required = true) // add this annotation for each field value 
    protected String test; 
    //other fields + getter and setter 

당신은 매핑하면 파일이 제대로 당신을 위해 비 정렬 화 객체에 JAXB를 사용 : -

SoapMessage message = (SoapMessage) messageContext.getRequest(); 
    SoapBody soapBody = message.getSoapBody(); 
    Source bodySource = soapBody.getPayloadSource(); 
    DOMSource bodyDomSource = (DOMSource) bodySource; 

    JAXBContext context = JAXBContext.newInstance(Request.class); 
    Unmarshaller unmarshaller = context.createUnmarshaller(); 

    Request request = (Request) unmarshaller.unmarshal(bodyDomSource); 
    // populate request object. 
+0

감사합니다 많이. 효과가있다. – user2332505