2012-05-10 18 views
6

Ich möchte eine Anwendung zum Testen von Webdiensten entwickeln, die automatisch ein JSF-Formular mit Parametern aus der bereitgestellten WSDL generiert.Wie dynamisch Java Beans von WSDL generieren?

Die WSDL-URL wird vom Benutzer bereitgestellt und ich kenne die Namen der Operationen nicht, bevor ich sie analysiere. Ich möchte, dass die App die geparsten Operationen und ihre Parameter durchläuft und automatisch die entsprechenden Java Beans erzeugt, die ich verwenden werde, um ein JSF-Formular zu generieren.

Ich habe CXF und JAX-WS getestet, aber ich denke, dass sie die Operationsnamen kennen müssen, bevor sie Java-Beans generieren. Wie erzeugt man transparent Java Beans für jede WSDL? Manuell läuft ist keine Lösung.

+0

Was ist mit dem Ausführen von wsdl2java von innerhalb Ihres Programms? –

+1

AFAIK, 'wsdl2java' erzeugt * .java Dateien mit Operationsnamen, die ich irgendwie dynamisch kompilieren und importieren muss. Wie würde ich das tun, nicht ihre Namen kennen, bevor Bohnen erstellt werden? – niutech

Antwort

4

CXF hat eine "Dynamic" (siehe: http://cxf.apache.org/javadoc/latest-2.6.x/org/apache/cxf/jaxws/endpoint/dynamic/JaxWsDynamicClientFactory.html), die dafür verwendet werden können. Er analysiert die wsdl, generierte JAXB-Objekte und kompiliert sie und gibt einen Client zurück, der verwendet werden kann, um die Operationen und Typen und damit assoziierte Clients zu erhalten.

+0

Ich habe CXF DynamicClient verwendet und es funktionierte ganz gut: 'JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); Client c = dcf.createClient (URL); Endpunkt e = c.getEndpoint(); ServiceInfo si = Endpunkt.getService(). GetServiceInfos(). Get (0); BindingInfo bi = si.getBindings(). Get (0); BindingOperationInfo boi: bi.getOperations(). Get (0); ' – niutech

+0

Ich habe versucht mit dem oben angegebenen Code aber nicht funktioniert. Es klagt über .get (0) für BindingInfo und BindingOperationInfo. Könnten Sie bitte bitte den Arbeitscode hier platzieren. Vielen Dank – Motilal