Domanda

L'implementazione JAX-WS raggruppata con JDK6 può essere utilizzata per fornire un server di servizi Web senza alcuna biblioteca aggiuntiva.JVM inizierà con un server WS su una porta specificata.

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

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

La domanda che ho è come questo differisce dalla metropolitana del progetto?Se l'obiettivo finale è quello di ospitare i servizi Web all'interno del Tomcat, quindi posso ancora utilizzare funzionalità in bundle e quindi reindirizzarsi su questo server WS in bundle o è meglio distribuire il servlet della metropolitana?

È stato utile?

Soluzione

Per quanto ne so, Jax-WS è solo un modello che deve essere implementato dal JDK6 o dall'attuazione della metropolitana.

Metro è solo l'implementazione standard spedita con il server applicazioni GlassFish. Vedi qui .

Pertanto non ci dovrebbero essere differenze.

Altri suggerimenti

Bene, La prima cosa che devi sapere sulla metropolitana, è che è un progetto ombrello per vari progetti correlati WS Viz. Jax-ws, jaxb, wsit, jax-ws-commons ecc.

Ciascuno di questi componenti ha due parti, API (specifiche) e la parte di implementazione chiamata come implementazione di riferimento (RI). Le specifiche sono definite nel 'javax.xml.ws', 'javax.xml.bind' ecc. E il RI vai nei pacchetti 'com.sun.xxx'.

Ora da qualche parte intorno a JDK 6, aggiornare 4, Sun / Oracle ha iniziato a raggruppare questi API + RIS nel JDK IT e continua a aggiornarli con gli aggiornamenti del JDK.

A partire dall'ultimo JDK 6 update31, il JDK contiene le seguenti visioni di API JAXWS e JAXB e RI

JDK6 U31 - JAXB API @ 2.1 & RI @ 2.1.10, JaxWS API @ 2.1 e RI @ 2.1.6

Ora se vai al http://jaxb.java.net e http://jax-ws.java.net pagine e vedi l'ultima versione sotto 2.1.x, vedrai che Jaxb RI è a 2.1.13 e JaxWS RI è 2.1 .7, cioè le implementazioni RI delle 2.1 SPCE che sono in bundle con l'ultimo aggiornamento JDK 6 sono un paio di versioni dietro quelle rilasciate sotto la metropolitana. Quindi, per utilizzare gli ultimi 2.1 barattoli, copia semplicemente i vasi API + RI sul tuo classpath, come descritto qui http://jax-ws.java.net/2.1.7/docs/releasenotes.html#Running_on_top_of_jdk_6 .

Per rendere le cose più confuse, Metro Il progetto Ombrello ha i suoi numeri di versione, che sono da oggi, 1,5, 2.0, 2.0.1, 2.1, 2.1.1, 2.2

Metro 1.5 è stata l'ultima build che ha raggruppato le 2.1 SPCS e l'ultimo RIS per quella specifica, ovvero la metropolitana 1.5 contiene JaxWS e JaxB API @ 2.1 e JaxWS RI @ 2.1.7 e JaxB RI @ 2.1.13. Metro 2.0 in poi, Bundles Jaxb e JaxWS APIS V2.2 e l'ultimo RI come dei dati di rilascio. per esempio. L'ultima versione della metropolitana 2.2 Bundles Jaxb RI 2.2.5 e JaxWS RI 2.2.6.

Ma c'è un fermo, JDK 6 Bundles V2.1 per JAXWS e JAXB (APIS + RI), e se si utilizzano semplicemente JAXWS, JaxB V2.2 Jars nel tuo classpath non funzionerà. Dovrai usare il meccanismo del barattolo approvato, come descritto qui http:// jax- ws.java.net/2.2.3/docs/releasenotes.html#Running_on_top_of_jdk_6 .

Quindi per qualsiasi versione della metropolitana 2.0 e successive, dovrai copiare i file Jax-WS-Api.jar e Jaxb-Api.jar sotto $ java_home / jre / lib / approvato o usa il -djava.orsted Proprietà del sistema .dirs.

E un po 'di più divertente, la metropolitana non è solo un progetto ombrello che contiene i progetti Jax-WS, Jaxb (tra gli altri), ma fa anche un vaso Uber da questi progetti.

AS E.G., Api.jar di Metro's Webservices-Api.jar contiene JaxWS-API.JAR, JaxB-API.JAR (RI) + API da altri progetti per bambini come WSIT, Jax-WS-Commons ecc.

e webservices-rt.jar contiene jaxws-rt.jar, jaxb-rt.jar, + vasetti RT di altri progetti per bambini come WSIT, Jax-WS-Commons ecc.

Quindi per riassumere -

Se si desidera sviluppare i tuoi ws contro le specifiche JAXWS / JAXB V2.1, usa semplicemente il JDK 6 (qualsiasi aggiornamento passato U04). Se si desidera essere assolutamente sicuri di utilizzare le ultime versioni APIS + RIS di 2.1 specifiche, utilizzare semplicemente le ultime barattoli di rilascio 2.1.x da Jaxws e Jaxb. IE Utilizzare JAX-WS 2.1.7 e JAXB 2.1.13, nel tuo classpath, [oppure è possibile utilizzare la Metro 1.5's WebServices-Api.jar e Webservices-Rt.jar mentre raggruppano il JaxWS / Jaxb / WSIT /. .]

Se si desidera sviluppare i tuoi ws contro le ultime specifiche JaxWS / JaxB V2.2, dovrai utilizzare Jax-WS V2.2.6 e JaxB Ver 2.2.5 Jars [o in alternativa utilizzare i servizi Web della Metro 2.2 -api.jar e webservices-rt.jar mentre corrono il jaxws / jaxb / wsit ..] Ma dovrai usare il meccanismo di barattolo approvato come descritto sopra, per sovrascrivere il JDK incluso Jars / Jax V2.1 Jars.

La mia raccomandazione - Se V2.1 è ok con voi usi i vasi della metropolitana 1.5 (Webservices-API, WebServices-Rt). Se hai bisogno di V2.2 utilizzare i vasetti della metropolitana 2.2 (Webservices-API, WebServices-Rt) e assicurati di mettere WebServices-API.jar nella dir approvato.

Avrete bisogno di barattoli della metropolitana (Webservices- [API, RT] .jar) Se hai intenzione di usare roba come FastinFosets, MTOM, ecc., Mentre i JDK hanno ingabbiato i vasi o per quella materia solo il Jaxws-ri.jar e jaxb-ri.jar non ti darà queste funzionalità.

Spero che questa posta piuttosto lunga sia stata utile per cancellare alcune cose.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top