Pergunta

A implementação JAX-WS empacotada com JDK6 pode ser usada para fornecer um servidor Web Services sem qualquer bibliotecas adicionais.A JVM começará com um servidor WS em uma porta especificada.

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

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

A pergunta que tenho é como isso difere do metro do projeto?Se o objetivo final é hospedar serviços da Web dentro do Tomcat, então eu ainda posso usar a funcionalidade agrupada e apenas redirecionar para este servidor WS empacotado ou é melhor implantar o servlet do metrô?

Foi útil?

Solução

Tanto quanto eu sei que o JAX-WS é apenas um modelo que deve ser implementado pela implementação JDK6 ou da metrô.

Metro apenas é a implementação padrão enviada com o servidor de aplicativos Glassfish. Veja aqui .

Portanto, não deve haver diferenças.

Outras dicas

Bem, A primeira coisa que você deve saber sobre o metrô, é que é um projeto guarda-chuva para vários projetos relacionados à WS viz. JAX-WS, JAXB, WSIT, JAX-WS-COMMONS, etc.

Cada um desses componentes tem duas partes, API (especificações) e a parte de implementação chamada de implementação de referência (RI). As especificações são definidas no 'javax.xml.ws', 'javax.xml.bind' etc. e o RI vá nos pacotes 'com.sun.xxx'.

Agora em algum lugar ao redor de JDK 6, Atualizar 4, Sun / Oracle começou a agravar essas APIs + RIS no eu JDK, e continuou atualizando com atualizações para o JDK.

A partir do último JDK 6 Update31, o JDK contém as seguintes verizações do JAXWS e JAXB API e RI

jdk6 u31 - JAXB API @ 2.1 & ri @ 2.1.10, JAXWS API @ 2.1 e RI @ 2.1.6

Agora, se você for para o http://jaxb.java.net e http://jax-ws.java.net páginas, e veja o último lançamento abaixo de 2.1.x, você verá que Jaxb RI está em 2.1.13 e o JAXWS RI é 2.1 .7, ou seja, as implementações do RI dos 2.1 SPEs que são empacotadas com a última atualização do JDK 6 são algumas versões por trás dos que lançam sob metrô. Portanto, para usar os mais recentes jarros 2.1, basta copiar os frascos da API + RI para o seu caminho, conforme descrito aqui http://jax-ws.java.net/2.1.7/docs/releasenotes.html#running_on_top_of_jdk_6 .

Para tornar as coisas mais confusas, o Metro, o Projeto Grupo de Guarda-chuva, o seu próprio número de versão, que são a partir de hoje, 1,5, 2,0, 2.0.1, 2.1, 2.1.1, 2.2

Metro 1.5 foi a última compilação que empatou os 2.1 SPEs e os mais recentes RIS para essas especificações, ou seja, o Metro 1.5 contém Jaxws e Jaxb Apis @ 2.1 e Jaxws RI @ 2.1.7 e Jaxb Ri @ 2.1.13.

Metro 2.0, Bundles Jaxb e Jaxws Apis v2.2 e o RI mais recente a partir dos dados de liberação. por exemplo. O mais recente lançamento do metrô 2.2 Bundles Jaxb RI 2.2.5 e JAXWS RI 2.2.6.

Mas há uma captura, JDK 6 Bundles v2.1 para JAXWS e JAXB (APIs + RI), e se você simplesmente usar Jaxws, Jaxb v2.2 frascos no seu espaço de classe, não funcionará. Você terá que usar o mecanismo jarro endossado, conforme descrito aqui http:// jax- ws.java.net/2.2.3/docs/releasenotes.html#running_on_top_of_jdk_6 .

Portanto, para qualquer versão do metrô 2.0 e superior, você precisará copiar os arquivos JAX-WS-API.JAR e JAXB-API.JAR abaixo de $ Java_Home / JRE / lib / endossado ou use o -djava.endorsed Propriedade do sistema .Dirs.

e alguns mais divertidos, o Metro não é apenas um projeto de guarda-chuva que contém os projetos JAX-WS, JAXB (entre outros), mas também faz um jarro Uber desses projetos.

para que, por exemplo, o WebServices-API.jar do Metro.jar contém Jaxws-Api.jar, Jaxb-Api.jar (RI) + APIs de outras crianças projetos como WSIT, JAX-WS-Commons etc.

e webservices-rt.jar contém jaxws-rt.jar, jaxb-rt.jar, + rt frascos de outras crianças projetos como WSIT, JAX-WS-Commons etc.

Então resumir -

Se você quiser desenvolver seu WS contra as especificações JAXWS / JAXB V2.1, basta usar o JDK 6 (qualquer atualização após U04). Se você quiser ser absolutamente, certifique-se de usar as versões mais recentes da APIs + RIS de 2.1 especificações, basta usar os últimos jarros de lançamento 2.1.x do JAXWS e JAXB. ou seja, use o JAX-WS 2.1.7 e o JAXB 2.1.13, no seu caminho de classe, [ou você pode usar o Webservices-API.Jar do Metrô 1.5 e WebServices-Rt.jar como eles empacotam o JAXWS / JAXB / WSIT /. .]

Se você quiser desenvolver o WS contra as últimas especificações do JAXWS / JAXB V2.2, você terá que usar jars JAX-WS v2.2.6 e Jaxb Ver 2.2.5 [ou alternativamente usar o WebServices do Metro 2.2 -Api.jar e webservices-rt.jar como eles empacotam o JAXWS / JAXB / WSIT ..] Mas você terá que usar o mecanismo jarro endossado como descrito acima, para substituir o JDK incluído Jaxws / Jaxb v2.1 frascos.

Minha recomendação - se v2.1 estiver OK com você usa os jarros do Metro 1.5 (WebServices-API, WebServices-RT). Se você precisar de v2.2 usar frascos do Metro 2.2 (WebServices-API, WebServices-RT) e certifique-se de colocar WebServices-api.jar no diretório endossado.

Você precisará de frascos de metrô (Webservices- [API, RT] .jar) se você vai usar coisas como fastinfosets, MTOM, etc, como o JDK empacotou frascos ou para esse assunto apenas o Jaxws-Ri.jar e Jaxb-Ri.jar não lhe dará esses recursos.

Espero que este e-mail bastante longo tenha sido útil para esclarecer algumas coisas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top