Frage

JAX-WS-Implementierung, die mit JDK6 gebündelt wurden, kann verwendet werden, um einen Web Services-Server ohne zusätzliche Bibliotheken bereitzustellen.JVM beginnt mit einem WS-Server auf einem angegebenen Port.

http://java.sun.com/developer/technicalarticles/j2se/jax_ws_2/

http://java.sun.com/developer/technicalArticles/j2se/jax_ws_2_pt2/

Die Frage, die ich habe, ist, wie unterscheidet sich dies von der Projektmetro?Wenn das Endziel ist, um Web-Services in Tomcat zu hosten, kann ich noch die gebündelte Funktionalität verwenden und dann einfach auf diesen gebündelten WS-Server umleiten oder ist es besser, das Metros-Servlet bereitzustellen?

War es hilfreich?

Lösung

Soweit ich weiß, dass JAX-WS nur eine -vorlage ist, die entweder von der JDK6 oder der Metro-Implementierung implementiert werden muss.

etro ist nur die Standardimplementierung, die mit dem Glassfish-Anwendungsserver geliefert wird. hier sehen .

Daher sollte es keine Unterschiede geben.

Andere Tipps

gut, Das erste, was Sie über Metro wissen müssen, ist, dass es sich um ein Dachprojekt für verschiedene WS-Projekte handelt. JAX-WS, JAXB, WSIT, JAX-WS-Commons usw.

Jede dieser Komponenten hat zwei Teile, API (Spezifikationen) und das Implementierungs-Teil als Referenzimplementierung (RI). Die Spezifikationen sind in der 'javax.xml.ws', 'javax.xml.bind', 'javax.xml.bind' definiert, und der RI geht in den Paketen 'com.sun.xxx'.

Jetzt irgendwo um JDK 6, Update 4, Sun / Oracle begann diese APIs + RIS im JDK-IT-Selbst zu bündeln, und aktualisierte diese mit Updates auf das JDK.

Ab dem letzten JDK 6 Update31 enthält das JDK die folgenden Untersuchungen von Jaxws und Jaxb-API und RI

jdk6 u31 - jaxb api @ 2.1 & ri @ 2.1.10, jaxws api @ 2.1 und ri @ 2.1.6

jetzt, wenn Sie zum http://jaxb.java.net und http://jax-ws.java.net http://jax-ws.java.net/2.1.7/docs/releasenotes.html#running_on_top_of_jdk_6 .

Um die Angelegenheiten zu erstellen, mehr verwirrend, Metro Das Umbrella-Projekt verfügt über eigene Versionsnummern, die ab heute, 1,5, 2.0, 2.0.1, 2.1, 2.1.1, 2.2

etro 1.5 war der letzte Build, der die 2,1-Strichen und die neueste RIS für diese Spezifikationen bündelte, dh @ 2.1 und jaxws ri @ 2.1.7 und jaxb ri @ 2.1.13. .

metro 2.0, bündelt jaxb und jaxws apis v2.2 und den neuesten ri nach den Releasedaten. z.B. Die neueste Metro-Freisetzung 2.2 Bündel JAXB RI 2.2.5 und JAXws RI 2.2.6.

Es gibt jedoch einen Fang, JDK 6 Bundles V2.1 für JAXws und Jaxb (APIS + RI), und wenn Sie einfach Jaxws verwenden, JAXB V2.2-Gläser in Ihrem Klassenpfad funktioniert nicht. Sie müssen den bestätigten Glasmechanismus verwenden, wie hier beschrieben http:// jax- ws.java.net/2.2.3/docs/releasenotes.html#running_on_top_of_jdk_6 .

Also für jedes Metro-Release 2.0 und höher müssen Sie die Dateien von JAX-WS-API.JAR und JAXB-API.JAR unter $ java_home / jre / lib / billig kopieren, oder verwenden Sie die -djava.endored .Dirs-Systemeigenschaft.

und etwas mehr Spaß, Metro ist nur kein Umbrella-Projekt, das die Jax-WS, JAXB-Projekte (unter anderem) enthält, aber es macht auch ein Uber-Jar aus diesen Projekten.

So z. B. der METRO-Webservices-api.jar enthält jaxws-api.jar, jaxb-api.jar (ri) + apis von anderen Kindern projiziert wie WSIT, JAX-WS-Commons usw.

und webservices-rt.jar enthält jaxws-rt.jar, jaxb-rt.jar, + rt-gläser anderer kinderprojekte wie wsite, jax-ws-commons usw.

so zu fassen -

Wenn Sie Ihre WS gegen JAXws / JAXB V2.1-Spezifikationen entwickeln möchten, verwenden Sie einfach den JDK 6 (ein beliebiger Update-U04). Wenn Sie unbedingt sicher sein möchten, dass die neuesten APIS + RIS-Versionen von 2.1 Spezifikationen verwendet werden, verwenden Sie einfach die letzten 2.1.x Release-Gläser von JAXws und Jaxb. dh verwenden Sie JAX-WS 2.1.7 und JAXB 2.1.13, in Ihrem Klassenpfad [oder Sie können die WebServices-API.jar und WebServices-RT.jar von Metro 1.5 verwenden, während sie den JAXws / JAXB / WSIT / Bündel bündeln. .]

Wenn Sie Ihr WS gegen die neuesten JAXws / Jaxb-V2.2-Spezifikationen entwickeln möchten, müssen Sie JAX-WS V2.2.6 und JAXB-Ver 2.2.5-Gläser verwenden [oder alternativ verwenden Sie die Webservices von Metro 2.2 -api.jar und webserservices-rt.jar, wenn sie den JAXws / JAXB / WSIT bündeln ..] Sie müssen jedoch den angebotenen Glasmechanismus wie oben beschrieben verwenden, um den JDK enthalten, der JAXws / Jaxb V2.1-Gläser enthält.

Meine Empfehlung - Wenn V2.1 mit Ihnen in Ordnung ist, verwenden Sie die Metro 1,5-Jars (WebServices-API, WebServices-RT). Wenn Sie V2.2 benötigen, verwenden Sie Metro 2.2-Jars (WebServices-API, WebServices-RT), und stellen Sie sicher, dass Webservices-API.jar in den bestätigten DIR gesetzt werden.

Sie benötigen Metro-Gläser (WebServices- [API, RT] .jar), wenn Sie Zeug wie Fastinfosets, MTOM usw. verwenden, als das JDK gebündelte Gläser oder für diese Angelegenheit nur der JAXws-RI.JAR und jaxb-ri.jar gibt Ihnen nicht diese Funktionen.

Hoffe, dass diese ziemlich lange Mail hilfreich war, um einige Dinge aufzuräumen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top