Pregunta

Es AXIS o CXF ¿Necesario para los servicios web Java?¿Se puede hacer todo a través del JDK (1.6)?

¿Fue útil?

Solución

¿Es necesario el eje o el CXF para los servicios web de Java?

No. aunque Eje2 es el marco más popular para trabajar con los servicios web no es la única forma de hacerlo.

¿Se puede hacer todo a través del JDK (1.6)?

Sí, pero es mucho más difícil. Se beneficiará enormemente de usar un marco utilizado por otras aplicaciones y de las correcciones de errores que proporciona el equipo de desarrollo. Hacer todo a mano es como reinventar la rueda.

Si desea tener el control total de lo que está sucediendo debajo, probablemente podría ir con: Jax-ws

o si la aplicación es muy simple, directamente con Socket.

Pero otra vez, Eje2 es la forma canónica de hacer WS (pero no el único)

Otros consejos

Lo siguiente se basa en una historia verdadera y personal:

Por lo tanto, desea consumir un servicio web en su aplicación web Java, y no desea agregar 10MIB de frascos a su archivo Lean 1.3 MIB .War, y además es excelente para analizar XML (puede entregar las consultas XPath de código, y archivos XSLT), comprende totalmente HTTP, y el cliente con el que está interactuando tiene una excelente documentación. Descargue la mirada WSDL en sus puntos finales y sus métodos y comienza a crear una clase Java que se asigna a las características que necesitará. Ya te sientes genial.

Ellos comienzan a leer sobre cómo enviar una solicitud de jabón y piensas que esto se ve un poco detallado, pero lo que oye, todo es una cadena, por lo que comienzas a construir una utilidad que toma tu objeto de solicitud Java y lo convierte en una solicitud de jabón . Envía su solicitud de jabón claro al servidor pero se niega (Falta una firma).

Por lo tanto, ahora comienza a agregar frascos de cifrado a su proyecto y comienza a ver cómo calcular una firma de parte de un documento XML e incluya tanto TI como el documento en la solicitud. Esto te lleva un tiempo, pero con suficiente piratería obtienes un mensaje que puedes enviar a tu servicio de jabón y ahora está tratando con el Respuesta de jabón. Ahora te sientes genial ...

Hasta que el administrador de su cliente cambie sus requisitos de seguridad, emita nuevas claves públicas y actualice la interfaz SOAP con algunos tipos personalizados, y su próximo cliente que ejecuta un servicio similar (pero en un servidor de Windows) quiere que implemente con ellos como bien.

En este punto, dejé de intentar implementar esto de una manera pura de Java y comencé a usar bibliotecas estándar. Tratan con cosas como cifrado, mariscal, desviaciones forman los estándares y le permiten concentrarse en cosas que están más cerca de su dominio de problemas. Espero que puedas ahorrarte el mes perdido que me llevó aprender esta lección.

Una actualización sobre el panorama de los servicios web en 2013.

Los servicios web solían estar basados ​​en SOAP y XML.Los servicios web se estandarizaron en JAX-WS.Algunos de los marcos más populares son (fueron):

  • Eje 1.x
  • Eje 2
  • Apache CXF - CXF también incluye otros protocolos.Es un marco mucho más amplio.
  • Metro Web Services que incluye la implementación de referencia JAX-WS.
  • Java 6 y Java 7 incluyen JAX-WS RI de forma predeterminada.Significa que los marcos ya no son necesarios excepto para generar apéndices/esqueletos de clientes y servicios.

Hay otras implementaciones que no se enumeran aquí y que son específicas del proveedor, p.Implementación de WS de IBM Websphere y implementación de WS de Weblogic.

Sin embargo, en general, para crear servicios web, recomendaría Metro y JAX-WS RI.

Tenga en cuenta que existen muchos estándares WS-*, p.WS-Security que puede no ser parte de todas las implementaciones de WS.

Dado que los servicios web existen desde hace un tiempo, han surgido otras alternativas tanto en términos de estilo arquitectónico, protocolo y codificación.

Por ejemplo, XML solía ser la codificación de facto.JSON ahora es más frecuente.Vale la pena investigar Jackson, un analizador JSON o Google GSON.Los principales argumentos a favor de JSON son que es fácil de usar, liviano y amigable para los desarrolladores.

Junto con JSON vino REST.REST es un estilo arquitectónico.Con REST, aún puede implementar "servicios web" en el sentido de servicios remotos que pueden consumirse fácilmente a través de una red.REST también se ha estandarizado en la familia de estándares Java como JAX-RS.Algunas de las implementaciones populares de JAX-RS incluyen CXF, Jersey y RESTLet.

Finalmente, hay algunos chicos nuevos en el bloque que usan codificaciones binarias.Esos son Google Protocol Buffers y Apache Thrift.Su principal objetivo es el rendimiento así como un soporte más amplio para otros lenguajes (Java, C#, Erland, Perl...).

Al desarrollar un servicio web hoy en día, la pregunta debería ser:- ¿Me importa el rendimiento?- ¿Quiero acceder al servicio desde muchos idiomas diferentes?- ¿Quiero que sea compatible con dispositivos móviles?

Estos deberían ayudarle a guiar su elección.Además, prefiero mantener mis dependencias al mínimo.Esto significa que preferiría tomar algo que sea nativo de JRE o JDK, por ejemplo.la implementación de referencia JAX-WS o JAX-RS.

Como alternativa al eje, puede usar el Spring Web Webervices Marco para ejecutar su aplicación WebServices dentro de un contenedor J2EE como Tomcat o cualquier cosa similar. Lo he encontrado muy fácil de usar y configurar, y si desea integrar sus servicios web en otra aplicación web más adelante, es bastante fácil de hacer (lo he hecho yo mismo en dos ocasiones separadas).

Puede usar las transmisiones HTTP proporcionadas por el servidor web a medida que lanza, pero usar un marco y algunos frascos (que están demostrados para funcionar) le ahorrará muchos dolores de cabeza y mucho tiempo a largo plazo.

Normalmente querrá utilizar un marco de programación para servicios web.

Algo como Axis, CXF o Java EE (Glassfish) Descargar desde Sun.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top