Получение необработанного параметра XML в методе веб-сервиса JAX-WS - PullRequest
4 голосов
/ 18 ноября 2010

Как добиться чего-то подобного:

@WebService(endpointInterface = "ru.citc.techtest.cxfconcepts.HelloWorld")
public class HelloWorldImpl implements HelloWorld {

    public String sayHi(DOMSource xml) {
        return "Hello";
    }
}

Мне нужен необработанный XML для обработки (SAX или DOM).В то же время я хочу использовать существующий метод маршрутизации JAX-WS. (Я использую Apache CXF). Возвращаемое значение может быть любого типа.

1 Ответ

3 голосов
/ 19 ноября 2010

Я считаю, что это будет работать:


@WebService(wsdlLocation = "....")
@DataBinding(org.apache.cxf.databinding.source.SourceDataBinding.class)
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) 
public class HelloWorldImpl implements HelloWorld {
     public Source sayHi(Source xml) {
        return xml;
    }
}

По умолчанию вы должны получить StaxSource (который является подклассом SAXSource), чтобы вы могли передать его в свою библиотеку обработки XML и т.п. Вы можете вернуть любой подкласс Source. Тем не менее, вы также можете быть более конкретным и использовать:


public Source sayHi(DOMSource xml) 

если вы знаете, что вам это нужно как DOM. Я на самом деле думаю:


public Source sayHi(XMLStreamReader xml) 

тоже подойдет.

...