Spring WS 2.0.2: использование StAX с @Endpoint - PullRequest
2 голосов
/ 09 июня 2011

Я пытаюсь использовать StAX с Spring WS 2.0.2, но мне не повезло, что он работает.Я нашел пример в сети здесь , но он использует AbstractStaxStreamPayloadEndpoint, который сейчас устарел в Spring WS 2.x.Я пытаюсь использовать подход аннотации @Endpoint, но получаю следующую ошибку:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>SOAP-ENV:Server</faultcode>
         <faultstring xml:lang="en">No adapter for endpoint [public void com.endpoint.AddressTypeEndpoint.handleReadAddressTypeRequest(javax.xml.stream.XMLStreamReader,javax.xml.stream.XMLStreamWriter) throws java.lang.Exception]: Is your endpoint annotated with @Endpoint, or does it implement a supported interface like MessageHandler or PayloadEndpoint?</faultstring>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

А вот код моей конечной точки:

package com.endpoint;

import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;

import org.springframework.ws.server.endpoint.annotation.Endpoint;
import org.springframework.ws.server.endpoint.annotation.PayloadRoot;

@Endpoint
public class AddressTypeEndpoint {
    private static final String NAMESPACE_URI = "http://client/AddressType";

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "ReadAddressTypeRequest")
    public void handleReadAddressTypeRequest(XMLStreamReader streamreader, XMLStreamWriter streamwriter) throws Exception {
        System.out.println("Got to the endpoint");
    }
}

Кто-нибудь знает, какЯ могу использовать StAX с Spring WS, используя @Endpoint?

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

Можете ли вы попытаться аннотировать параметр метода:

 @PayloadRoot(namespace = NAMESPACE_URI, localPart = "ReadAddressTypeRequest")
 public void handleReadAddressTypeRequest(
      @RequestPayload XMLStreamReader streamreader) throws Exception {... }

[Редактировать] Для ответа аннотируйте метод с помощью @ResponsePayload и верните один из объектов, перечисленных здесь http://static.springsource.org/spring-ws/site/reference/html/server.html#d4e1220 (вместо void)

0 голосов
/ 20 июня 2011

Попробуйте использовать @ResponsePayload, как описано в документе Spring WS по адресу: http://static.springsource.org/spring-ws/sites/2.0/reference/html/server.html

...