2009-10-22 16 views

Antwort

5

Ich war in Ihrer Position vor ein paar Monaten zurück und landete bei der Metro.

Die Killer-Funktion für mich war die Tatsache, dass Metro Standard-Annotationen verwendet, um eine bestimmte Methode als Web-Service und, dass alle Klebstoff-Code zur Laufzeit automatisch generiert werden konnte. I.e. Es gibt keine zusätzlichen Schritte beim Erstellen und Deployment und es funktioniert in einem Standard-Servlet-Container (2.5 glaube ich) unter Java 5, unserer derzeitigen Bereitstellungsplattform.

Das hat sehr gut für uns gearbeitet.

Der Grund, warum ich für die Standardanmerkungen ging, ist das sehr einfache, dass unsere Anwendungen dazu neigen, buchstäblich seit Jahrzehnten zu leben, nach denen einige Wartung getan werden muss. Durch Kodieren an einer Schnittstelle anstelle einer Implementierung können wir das gesamte Gerüst unter dem Code austauschen, ohne den Code zu ändern, der den Web-Service implementiert. In zehn Jahren (oder mehr) ist möglicherweise eine bestimmte Implementierung verwelkt und abgestorben, aber andere Implementierungen sind möglicherweise seither gestiegen und sofort steckbar.

Sehen Sie, wie viele Möglichkeiten Sie heute für einen Servlet-Container haben ... Das ist die Kraft einer guten API!


Edit: Anscheinend enthält die Java 6-Laufzeitumgebung den Metro-Stack plus einen minimalen Webserver. Mit anderen Worten, die JRE allein kann der oben erwähnte Gerüstersatz sein: D

+2

+1 für diese armen Idioten denken, die diesen Code in 10 Jahren herausfinden müssen. Kann einer von uns sein! –

+0

@yar, ich hatte nur gehofft, dass es nicht ich sein musste :) –

+0

AFAIK, Java 6 enthält keine Metro, es enthält JAX-WS RI, die eine Teilmenge von Metro ist (Metro = JAX-WS + WSIT /Tango). Aber ja, mit Java 6 können Sie einen Web-Service-Endpunkt über die Methode "Endpoint.publish()" veröffentlichen, indem Sie den in Java SE 6 eingebetteten HTTP-Server verwenden. Siehe http://www.javapassion.com/webservices/jaxwsjavase6. pdf. –

9

Sowohl Metro als auch CXF sind JAX-WS-konforme Web-Service-Stacks, und aus Sicht der Laufzeit gibt es nur sehr wenig Auswahl zwischen ihnen.

Allerdings hat CXF enorm bessere Dokumentation und viel mehr Flexibilität und zusätzliche Funktionalität, wenn Sie bereit sind, über die JAX-WS-Spezifikation hinauszugehen. Allein aufgrund der Dokumentation würde ich CXF über Metroe jederzeit auswählen.

Allerdings würde ich Spring WebServices entweder über Metro oder CXF wählen. Es ist nicht JAX-WS-konform, aber ich halte das nicht für ein Problem. Es ist auch wesentlich einfacher und wesentlich flexibler als beide. Sehr empfehlenswert.

+0

Könntest du ein wenig über die CXF-Funktionalität, über die du sprichst, und die Spring WS dito erzählen? –

+0

Die Freude von CXF und Spring-WS ist, dass Sie auf ihre Webseiten gehen und die ausgezeichnete Dokumentation lesen können, um zu sehen, was sie tun können :) – skaffman

+1

Ich weiß - Sie haben vielleicht gesehen, dass ich nach einem solchen Framework gesucht habe. Ich dachte an - wie - tatsächliche Erfahrungen und solche, auf die du hinweistest, und ich hatte diese seltsame Vorstellung, dass du sie vielleicht sogar teilen möchtest ... Schande über mich. –