2010-11-18 15 views
4

Comment obtenir quelque chose comme ça:Obtenir paramètre XML brut dans la méthode de webservice JAX-WS

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

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

je besoin d'un XML brut pour le traitement (SAX ou DOM). En même temps je veux tirer parti du routage de méthode existant de JAX-WS (j'utilise Apache CXF) La valeur retournée peut être n'importe quel type.

Répondre

3

Je crois que cela fonctionnera:


@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; 
    } 
} 

Par défaut, vous devez obtenir un StaxSource (qui est une sous-classe de SAXSource) afin que vous puissiez passer que dans votre bibliothèque de traitement XML et tel. Vous pouvez retourner n'importe quelle sous-classe de Source. Cependant, vous pouvez également être plus précis et utiliser:


public Source sayHi(DOMSource xml) 

si vous savez que vous en avez besoin en tant que DOM. Je pense en fait:


public Source sayHi(XMLStreamReader xml) 

fonctionnerait aussi bien.

+0

Daniel, merci une fois de plus. Souffle de Typpo -> Source –