Vla*_*kov 5 java web-services cxf jax-ws
如何实现类似的目标:
@WebService(endpointInterface = "ru.citc.techtest.cxfconcepts.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String sayHi(DOMSource xml) {
return "Hello";
}
}
Run Code Online (Sandbox Code Playgroud)
我需要原始 XML 进行处理(SAX 或 DOM)。同时我想利用 JAX-WS 的现有方法路由。(我使用 Apache CXF)返回值可以是任何类型。
我相信这会起作用:
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,您应该获得一个 StaxSource(它是 SAXSource 的子类),以便您可以将其传递到 XML 处理库等中。您可以返回 Source 的任何子类。但是,您也可以更具体并使用:
public Source sayHi(DOMSource xml)
Run Code Online (Sandbox Code Playgroud)
如果你知道你需要它作为 DOM。我其实认为:
public Source sayHi(XMLStreamReader xml)
Run Code Online (Sandbox Code Playgroud)
也可以。