2010-12-15 3 views
1

Ich möchte eine Anfrage an einen Webdienst senden und die Antwort lesen. Bisher habe ich JAXB verwendet, um Java-Klassen aus einem XSD zu generieren, von dem ich annehme, dass ich die Antwort lesen werde?Beginner Web Service Frage

Was ist der beste Weg für mich, die Anfrage zu implementieren? Der Web-Service, den ich verwende, ist ein Servlet und benötigt einen POST. Ist meine einzige Option, eine Zeichenfolge zu senden, die eine SOAP-Anforderung ist, die HttpURLConnection verwendet?

+1

Welcher Webservice ist das? Ist es ein REST-Service oder ist es SOAP? Sie haben einen Hinweis darauf gegeben, dass es sich um einen SOAP-Service handeln könnte. Wenn dies der Fall ist, könnten Sie einen Client aus der WSDL beispielsweise mit Axis 2 generieren. – gregor

+0

Sie können auch die Metro (http://metro.java.net) aufrufen /) Projekt. –

+0

Ja, eine SOAP-Anfrage. Es gibt keine WSDL, also ist meine einzige Option, HttpURLConnection zu verwenden? – bmw0128

Antwort

0

Wenn Sie sagen, dass Sie die Kontrolle über die andere Partei haben - oder Sie sind diese Partei, weil Sie nur Remoting zwischen zwei JVMs durchführen möchten, verwenden Sie eine andere Remoting-Lösung. Je nach Ihren Bedürfnissen könnten Sie etwas wie Protobuf, Hessian oder etwas wie Terracotta verwenden. Diese Frameworks sind viel einfacher zu bedienen und viel effizienter.

1

Ich empfehle einen Besuch in Apache CXF. Was Sie wollen, ist nicht nur nackter JAX-B, sondern ein JAX-WS + JAX-B Service, der sich um all das kümmert. Insbesondere können Sie einen JAX-WS-Provider verwenden, um einen Soap-Endpunkt zu erstellen, wenn keine WSDL vorhanden ist.

+0

Ich würde empfehlen, CXF zu verwenden, da das Tool Sie ermutigt, Schnittstellen in Java zu erstellen und dann basierend auf diesen Schnittstellen WSDLs und XSDs generiert. Das große Problem ist, dass bei Verwendung von Webservices diese WSDLs und XSDs Ihr Vertrag sind und wenn diese generierten Verträge leicht geändert werden können - so muss jede Partei, die Ihren Service nutzen muss, ihren Code sehr oft ändern. In der Praxis habe ich schon oft Probleme gesehen. – Gerbrand

+1

CXF ist ebenso gerne bereit, Code-First- und Contract-First-Services zu erbringen. Es ist ein merkwürdiger Ansatz, den Rahmen für die Unterstützung von beiden zu beschneiden. – bmargulies