2014-02-14 3 views
1

Я борюсь с Spring-WS, используемым с JDOM.spring-ws jdom wrong response

Код:

@Endpoint 
    @Namespace(uri = "http://example.pl/gb/schemas", prefix = "gb") 
    public class PdfCheckStatusEndPoint { 
     private static final String NAMESPACE_URI = "http://example.pl/gb/schemas"; 

     ...  


     @PayloadRoot(namespace = NAMESPACE_URI, localPart = "PdfStatusRequest") 
     @Namespace(uri = NAMESPACE_URI, prefix = "sch") 
     @ResponsePayload 
     public Element getPdfStatus(@XPathParam("//sch:policyNr") String policyNr) { 

       org.jdom2.Namespace javaxml2Namespace = org.jdom2.Namespace.getNamespace("http://example.pl/gb/schemas"); 
       Element responseElement = new Element("PersonResponse", javaxml2Namespace); 
       Element childElement1 = new Element("FullName"); 
       childElement1.setText("john doe"); 

       Element childElement2 = new Element("SSN"); 
       childElement2.setText("12345"); 

       responseElement.addContent(childElement1); 
       responseElement.addContent(childElement2); 
       return responseElement; 
     } 
    } 

Конечной сама работает, но ответ другой, чем ожидалось:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> 
    <env:Header/> 
    <env:Body> 
     <PersonResponse xmlns="http://example.pl/gb/schemas"/> 
    </env:Body> 
    </env:Envelope> 

Как вы можете видеть, дети не возвращаются, только корневой элемент. Есть идеи?

+0

Код, который у вас есть, выглядит отлично ... есть что-то другое, что происходит вне метода. можете ли вы отладить этот метод в return-statement? а затем следовать за XML обратно туда, где он выводится? – rolfl

+0

Второй комментарий. Предполагаются ли дочерние элементы в пространстве имен NO или пространство имен 'http: // example.pl/gb/schemas' – rolfl

+0

спасибо за ваш ввод, я предоставил решение в качестве ответа. – meliniak

ответ

1

Похоже, добавив эту зависимость:

<dependency> 
     <groupId>com.sun.xml.messaging.saaj</groupId> 
     <artifactId>saaj-impl</artifactId> 
     <version>1.3.3</version> 
    </dependency> 

наряду с определением фасоли:

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"> 
    <property name="messageFactory"> 
     <bean class="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/> 
    </property> 
</bean> 

делает работу.